fix: order lastleg delivery baseline for clean database
This commit is contained in:
+37
@@ -12,6 +12,7 @@ import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
import static org.junit.jupiter.api.Assertions.assertFalse;
|
||||
import static org.junit.jupiter.api.Assertions.assertNotNull;
|
||||
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||
|
||||
@@ -36,6 +37,38 @@ class DeliverySchemaContractTest {
|
||||
assertTrue(schema.contains("unique key uk_ll_delivery_outbound (customer_id,outbound_order_id)"));
|
||||
}
|
||||
|
||||
@Test
|
||||
void cleanDatabaseCreatesTheCompleteDeliveryTableBeforeEveryDependency() throws Exception {
|
||||
String schema = Files.readString(Path.of("src/main/resources/db/lastleg.sql"), StandardCharsets.UTF_8)
|
||||
.toLowerCase();
|
||||
String createToken = "create table if not exists ll_delivery_order";
|
||||
int create = schema.indexOf(createToken);
|
||||
int firstReference = schema.indexOf("ll_delivery_order");
|
||||
int createEnd = schema.indexOf(';', create);
|
||||
|
||||
assertTrue(create >= 0);
|
||||
assertEquals(create + "create table if not exists ".length(), firstReference);
|
||||
assertEquals(1, count(schema, createToken));
|
||||
assertTrue(createEnd > create);
|
||||
String definition = schema.substring(create, createEnd);
|
||||
for (String column : new String[] {
|
||||
"overseas_warehouse_name", "customer_name", "waybill_no", "delivery_method",
|
||||
"carrier_name", "pickup_method", "loading_type", "vehicle_type", "vehicle_size",
|
||||
"vehicle_plate", "driver_name", "driver_phone", "appointment_account", "seller_name",
|
||||
"total_weight_kg", "total_volume_cbm", "planned_delivery_at", "dispatched_at",
|
||||
"expected_arrival_at", "signed_at", "remark"
|
||||
}) {
|
||||
assertTrue(definition.contains(column), column);
|
||||
}
|
||||
assertTrue(schema.indexOf("alter table ll_delivery_order", createEnd) > createEnd);
|
||||
|
||||
String overseas = Files.readString(Path.of("..", "deploy", "sql", "海外区域统一增量-MySQL8.sql"),
|
||||
StandardCharsets.UTF_8).toLowerCase();
|
||||
assertTrue(overseas.contains("空库先执行 lastleg-service/src/main/resources/db/lastleg.sql 基线"));
|
||||
assertFalse(overseas.contains(createToken));
|
||||
assertFalse(overseas.contains("alter table ll_delivery_order"));
|
||||
}
|
||||
|
||||
@Test
|
||||
void deliveryPersistenceEntitiesUseSnowflakeIds() throws Exception {
|
||||
for (Class<?> type : new Class<?>[] { OutboundOrder.class, OutboundPalletItem.class, DeliveryOrder.class }) {
|
||||
@@ -55,4 +88,8 @@ class DeliverySchemaContractTest {
|
||||
assertTrue(migration.contains("create table if not exists ll_outbound_pallet_item"));
|
||||
assertTrue(migration.contains("create table if not exists ll_delivery_order"));
|
||||
}
|
||||
|
||||
private static int count(String source, String token) {
|
||||
return source.split(java.util.regex.Pattern.quote(token), -1).length - 1;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user