test(sql): align contracts with clean initialization
This commit is contained in:
+7
-5
@@ -44,10 +44,12 @@ class DeliveryDocumentContractTest {
|
||||
@Test void baselineAndOverseasEntryContainSameImmutableRevisionTable() throws Exception {
|
||||
String baseline=Files.readString(Path.of("src/main/resources/db/lastleg.sql"));
|
||||
String overseas=Files.readString(Path.of("../deploy/sql/海外区域统一增量-MySQL8.sql"));
|
||||
String marker="CREATE TABLE IF NOT EXISTS ll_delivery_document_revision (";
|
||||
String a=baseline.substring(baseline.indexOf(marker),baseline.indexOf(";",baseline.indexOf(marker))+1);
|
||||
String b=overseas.substring(overseas.indexOf(marker),overseas.indexOf(";",overseas.indexOf(marker))+1);
|
||||
assertThat(a.replaceAll("\\s+","")).isEqualTo(b.replaceAll("\\s+",""));
|
||||
assertThat(a).contains("uk_delivery_document_command","uk_delivery_document_version");
|
||||
for (String sql : List.of(baseline, overseas)) {
|
||||
assertThat(sql).contains("ll_delivery_document_revision",
|
||||
"uk_delivery_document_command", "uk_delivery_document_version",
|
||||
"snapshot_json", "request_hash");
|
||||
}
|
||||
assertThat(overseas).contains("CREATE TABLE ll_delivery_document_revision (")
|
||||
.doesNotContain("ALTER TABLE ll_delivery_document_revision");
|
||||
}
|
||||
}
|
||||
|
||||
+5
-5
@@ -68,11 +68,11 @@ class DeliverySchemaContractTest {
|
||||
|
||||
String overseas = Files.readString(Path.of("..", "deploy", "sql", "海外区域统一增量-MySQL8.sql"),
|
||||
StandardCharsets.UTF_8).toLowerCase();
|
||||
assertTrue(overseas.contains("begin inline empty-database baseline: lastleg"));
|
||||
assertTrue(overseas.contains(createToken));
|
||||
assertTrue(overseas.contains("request_hash char(64) null"));
|
||||
assertTrue(overseas.indexOf(createToken) < overseas.indexOf("assert_phase5_lastleg_identifiers_migratable"));
|
||||
assertTrue(overseas.contains("alter table ll_delivery_order add column overseas_warehouse_name"));
|
||||
String overseasCreateToken = "create table ll_delivery_order";
|
||||
assertTrue(overseas.contains(overseasCreateToken));
|
||||
assertTrue(overseas.contains("overseas_warehouse_name varchar(255)"));
|
||||
assertTrue(overseas.contains("unique key uk_ll_delivery_outbound_destination"));
|
||||
assertFalse(overseas.contains("alter table ll_delivery_order"));
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
+12
-20
@@ -5,34 +5,26 @@ import org.junit.jupiter.api.Test;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertFalse;
|
||||
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||
|
||||
class Phase5PdaDeploymentSqlContractTest {
|
||||
@Test
|
||||
void overseasUnifiedMigrationConvergesPhase5IdentifiersWithoutBackfill() throws Exception {
|
||||
void overseasCleanInitializationDefinesFinalPhase5IdentifiersWithoutBackfill() throws Exception {
|
||||
String sql = Files.readString(Path.of("..", "deploy", "sql", "海外区域统一增量-MySQL8.sql"),
|
||||
StandardCharsets.UTF_8);
|
||||
int start = sql.indexOf("-- 五期排车、出库与海外PDA正式业务号/幂等约束");
|
||||
int end = sql.indexOf("USE baiyue_lastleg;", start);
|
||||
assertTrue(start >= 0 && end > start);
|
||||
String phase5 = sql.substring(start, end);
|
||||
String normalized = sql.replaceAll("\\s+", "");
|
||||
|
||||
assertTrue(phase5.contains("assert_phase5_lastleg_identifiers_migratable"));
|
||||
assertTrue(phase5.contains("assert_phase5_lastleg_identifiers_ready"));
|
||||
assertTrue(phase5.contains("warehouse_id IS NULL OR TRIM(warehouse_id)='' OR TRIM(warehouse_id)='0'"));
|
||||
assertTrue(phase5.contains("SIGNAL SQLSTATE '45000'"));
|
||||
assertTrue(phase5.contains("MODIFY COLUMN warehouse_id VARCHAR(128) NOT NULL"));
|
||||
assertTrue(phase5.contains("ADD COLUMN completion_idempotency_key VARCHAR(255) NULL"));
|
||||
assertTrue(phase5.contains("ADD UNIQUE KEY uk_ll_dispatch_order_no(dispatch_no)"));
|
||||
assertTrue(phase5.contains("ADD UNIQUE KEY uk_ll_outbound_no(outbound_no)"));
|
||||
assertTrue(phase5.contains("ADD UNIQUE KEY uk_ll_dispatch_pda_task_no(task_no)"));
|
||||
assertTrue(phase5.contains("ADD UNIQUE KEY uk_ll_outbound_pda_task_no(task_no)"));
|
||||
assertTrue(phase5.contains("ADD UNIQUE KEY uk_ll_outbound_pda_complete_key(customer_id,completion_idempotency_key)"));
|
||||
assertFalse(Pattern.compile("(?im)^\\s*UPDATE\\s+").matcher(phase5).find());
|
||||
assertFalse(phase5.contains("JOIN ll_dispatch_order"));
|
||||
assertTrue(sql.contains("warehouse_id varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL"));
|
||||
assertTrue(sql.contains("completion_idempotency_key varchar(255)"));
|
||||
assertTrue(normalized.contains("UNIQUEKEYuk_ll_dispatch_order_no(dispatch_no)"));
|
||||
assertTrue(normalized.contains("UNIQUEKEYuk_ll_outbound_no(outbound_no)"));
|
||||
assertTrue(normalized.contains("UNIQUEKEYuk_ll_dispatch_pda_task_no(task_no)"));
|
||||
assertTrue(normalized.contains("UNIQUEKEYuk_ll_outbound_pda_task_no(task_no)"));
|
||||
assertTrue(normalized.contains("UNIQUEKEYuk_ll_outbound_pda_complete_key(customer_id,completion_idempotency_key)"));
|
||||
assertFalse(sql.contains("assert_phase5_lastleg_identifiers_migratable"));
|
||||
assertFalse(sql.contains("ALTER TABLE ll_dispatch_order"));
|
||||
assertFalse(sql.contains("ALTER TABLE ll_outbound_order"));
|
||||
|
||||
assertFalse(sql.contains("uk_ll_dispatch_order_no(customer_id,dispatch_no)"));
|
||||
assertFalse(sql.contains("uk_ll_outbound_no(customer_id,outbound_no)"));
|
||||
|
||||
Reference in New Issue
Block a user