test(sql): align contracts with clean initialization
This commit is contained in:
+3
-2
@@ -30,8 +30,9 @@ class DomesticWarehouseOrderExportPermissionSqlContractTest {
|
||||
}
|
||||
assertThat(iamSeed).contains("WHERE id IN (5102019, 5102024, 5102025, 5102026, 5102027)");
|
||||
assertThat(unified)
|
||||
.contains("WHERE id IN (5102019, 5102024, 5102025, 5102026, 5102027)")
|
||||
.contains("管理员或订单运营角色缺少订单导出与下载中心权限");
|
||||
.contains("VALUES (4000001,5102026,0,CURRENT_TIMESTAMP(3))")
|
||||
.contains("VALUES (4000003,5102026,0,CURRENT_TIMESTAMP(3))")
|
||||
.doesNotContain("管理员或订单运营角色缺少订单导出与下载中心权限");
|
||||
}
|
||||
|
||||
private static Path resolve(String relative) {
|
||||
|
||||
+5
-6
@@ -99,13 +99,12 @@ class OrderDeclarationUpdateContractTest {
|
||||
Path iam = Files.exists(iamDirect) ? iamDirect : Path.of("..").resolve(iamDirect);
|
||||
String iamSource = Files.readString(iam, StandardCharsets.UTF_8);
|
||||
|
||||
assertThat(source)
|
||||
.contains("expected_arrival_at DATETIME(3) NULL COMMENT '客户申报预计到货时间'")
|
||||
.contains("channel_changed TINYINT(1) NOT NULL DEFAULT 0 COMMENT '订单历史上是否由平台变更过渠道'")
|
||||
.contains("CALL unified_assert_column('baiyue_order', 'ord_order', 'expected_arrival_at')")
|
||||
.contains("CALL unified_assert_column('baiyue_order', 'ord_order', 'channel_changed')")
|
||||
assertThat(source.toLowerCase())
|
||||
.contains("expected_arrival_at datetime(3) default null comment '客户申报预计到货时间'")
|
||||
.contains("channel_changed tinyint(1) not null default '0' comment '订单历史上是否由平台变更过渠道'")
|
||||
.contains("platform:order:declaration:edit")
|
||||
.contains("WHERE id IN (5102019, 5102024, 5102025, 5102026, 5102027)");
|
||||
.contains("values (4000001,5102027,0,current_timestamp(3))")
|
||||
.contains("values (4000003,5102027,0,current_timestamp(3))");
|
||||
assertThat(iamSource)
|
||||
.contains("platform:order:declaration:edit")
|
||||
.contains("WHERE id IN (5102019, 5102024, 5102025, 5102026, 5102027)");
|
||||
|
||||
+8
-5
@@ -38,12 +38,15 @@ class InboundCodeSequenceSqlContractTest {
|
||||
String baseline = new ClassPathResource("db/order.sql").getContentAsString(StandardCharsets.UTF_8);
|
||||
String unified = Files.readString(resolveUnified(), StandardCharsets.UTF_8);
|
||||
|
||||
assertThat(baseline)
|
||||
.contains("CREATE TABLE IF NOT EXISTS ord_inbound_code_daily_sequence");
|
||||
for (String sql : java.util.List.of(baseline, unified)) {
|
||||
assertThat(sql)
|
||||
.contains("CREATE TABLE IF NOT EXISTS ord_inbound_code_daily_sequence")
|
||||
.contains("business_date DATE NOT NULL")
|
||||
.contains("current_value BIGINT UNSIGNED NOT NULL")
|
||||
.contains("PRIMARY KEY (business_date)")
|
||||
assertThat(sql.toLowerCase())
|
||||
.contains("create table")
|
||||
.contains("ord_inbound_code_daily_sequence")
|
||||
.contains("business_date date not null")
|
||||
.contains("current_value bigint unsigned not null")
|
||||
.contains("primary key (business_date)")
|
||||
.contains("按上海日期重新从1开始");
|
||||
}
|
||||
}
|
||||
|
||||
+14
-11
@@ -47,19 +47,22 @@ class OrderParentChildSqlContractTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
void unifiedEntryContainsTheExactOrderBlockBeforeFirstleg() throws Exception {
|
||||
void unifiedEntryContainsTheFinalOrderParentChildSchemaAndTriggers() throws Exception {
|
||||
String unified = read(resolve("deploy/sql/头程数据库统一增量-MySQL8.sql"));
|
||||
String module = read(resolveModule()).trim();
|
||||
String marker = "-- 来源:order/src/main/resources/db/phase3-order-parent-child-schema.sql";
|
||||
String next = "-- 来源:firstleg/src/main/resources/db/phase3-inbound-parent-child-schema.sql";
|
||||
int start = unified.indexOf(marker);
|
||||
int end = unified.indexOf(next, start + marker.length());
|
||||
|
||||
assertThat(start).isGreaterThanOrEqualTo(0);
|
||||
assertThat(end).isGreaterThan(start);
|
||||
assertThat(unified.substring(start + marker.length(), end).trim()).startsWith(module);
|
||||
assertThat(unified.lastIndexOf("SELECT 'PASS' AS migration_status"))
|
||||
.isGreaterThan(end);
|
||||
assertThat(unified)
|
||||
.contains("CREATE TABLE ord_order_fulfillment_split")
|
||||
.contains("source_order_id bigint unsigned NOT NULL")
|
||||
.contains("request_hash char(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL")
|
||||
.contains("UNIQUE KEY uk_order_split_child_role (tenant_id,child_order_id,split_role)")
|
||||
.contains("KEY idx_order_split_source (tenant_id,source_order_id,split_role)")
|
||||
.contains("CREATE TRIGGER trg_order_fulfillment_split_insert")
|
||||
.contains("NEW.split_role='LOADED' AND NEW.child_order_id<>NEW.source_order_id")
|
||||
.contains("CREATE TRIGGER trg_order_fulfillment_split_update")
|
||||
.contains("订单履约分片来源、子片与角色不可修改")
|
||||
.contains("SELECT 'PASS' AS initialization_status, 'CN' AS region")
|
||||
.doesNotContain("phase3_order_add_column")
|
||||
.doesNotContain("phase3_order_add_index");
|
||||
}
|
||||
|
||||
private static Path resolve(String path) {
|
||||
|
||||
@@ -20,18 +20,17 @@ class OrderPickupSqlContractTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
void unifiedScriptRelaxesInboundCodeBeforeClearingDraftsAndAddsPickupColumn() throws Exception {
|
||||
void unifiedScriptCreatesTheFinalPickupColumnsWithoutMigrationSteps() throws Exception {
|
||||
Path direct = Path.of("deploy/sql/头程数据库统一增量-MySQL8.sql");
|
||||
Path path = Files.exists(direct) ? direct : Path.of("../deploy/sql/头程数据库统一增量-MySQL8.sql");
|
||||
String sql = Files.readString(path);
|
||||
int relax = sql.indexOf("ALTER TABLE baiyue_order.ord_order MODIFY COLUMN inbound_code VARCHAR(40) NULL");
|
||||
int clearDraft = sql.indexOf("SET inbound_code = NULL");
|
||||
assertThat(relax).isGreaterThanOrEqualTo(0).isLessThan(clearDraft);
|
||||
String sql = Files.readString(path).toLowerCase();
|
||||
assertThat(sql).contains(
|
||||
"column_name = 'requested_pickup_at'",
|
||||
"ALTER TABLE baiyue_order.ord_order ADD COLUMN requested_pickup_at DATETIME(3) NULL",
|
||||
"CREATE PROCEDURE assert_submitted_order_inbound_code()",
|
||||
"SIGNAL SQLSTATE '45000'");
|
||||
assertThat(sql).doesNotContain("CONCAT('RK-', o.id)");
|
||||
"create table ord_order",
|
||||
"inbound_code varchar(40) default null",
|
||||
"requested_pickup_at datetime(3) default null");
|
||||
assertThat(sql)
|
||||
.doesNotContain("alter table baiyue_order.ord_order modify column inbound_code")
|
||||
.doesNotContain("set inbound_code = null")
|
||||
.doesNotContain("concat('rk-', o.id)");
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user