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
@@ -30,23 +30,26 @@ class OverseasProcurementSchemaContractTest {
}
@Test
void unifiedIncrementalContainsHistoryIdempotencyKeyForNewAndExistingDatabases() throws Exception {
void unifiedInitializationContainsFinalProcurementAndInboxShapes() throws Exception {
String sql = Files.readString(
Path.of("..", "deploy", "sql", "海外区域统一增量-MySQL8.sql"),
StandardCharsets.UTF_8);
assertTrue(sql.contains("idempotency_key VARCHAR(255) NULL COMMENT '操作幂等键'"));
assertTrue(sql.contains(
"ALTER TABLE ll_overseas_procurement_status_history ADD COLUMN idempotency_key VARCHAR(255) NULL"));
assertTrue(sql.contains(
"ALTER TABLE ll_overseas_procurement_order ADD COLUMN review_idempotency_key VARCHAR(255) NULL"));
assertTrue(sql.contains(
"ALTER TABLE ll_overseas_procurement_order ADD COLUMN review_request_hash CHAR(64) NULL"));
assertTrue(sql.contains(
"ALTER TABLE ll_overseas_procurement_order ADD COLUMN outbound_details JSON NULL"));
assertTrue(sql.contains(
"table_name='ll_overseas_procurement_status_history' AND column_name='idempotency_key'"));
assertTrue(sql.contains("ALTER TABLE ll_wallet_event_inbox"));
assertTrue(sql.contains("MODIFY COLUMN payload_hash VARCHAR(71) NOT NULL"));
String lower = sql.toLowerCase();
assertTrue(tableBlock(lower, "ll_overseas_procurement_status_history")
.contains("idempotency_key varchar(255)"));
String order = tableBlock(lower, "ll_overseas_procurement_order");
assertTrue(order.contains("review_idempotency_key varchar(255)"));
assertTrue(order.contains("review_request_hash char(64)"));
assertTrue(order.contains("outbound_details json"));
assertTrue(tableBlock(lower, "ll_wallet_event_inbox").contains("payload_hash varchar(71)"));
org.junit.jupiter.api.Assertions.assertFalse(sql.contains("ALTER TABLE ll_overseas_procurement"));
org.junit.jupiter.api.Assertions.assertFalse(sql.contains("ALTER TABLE ll_wallet_event_inbox"));
}
private static String tableBlock(String sql, String table) {
int start = sql.indexOf("create table " + table + " (");
int end = sql.indexOf(';', start);
return start < 0 || end < 0 ? "" : sql.substring(start, end);
}
}