test(sql): align contracts with clean initialization
This commit is contained in:
+17
-14
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user