test(sql): align contracts with clean initialization

This commit is contained in:
2026-09-17 15:10:27 +08:00
parent 1fe99eb6d0
commit 9dc344bdef
68 changed files with 851 additions and 1448 deletions
@@ -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)"));