feat(firstleg): add sailing calendar facts and APIs
This commit is contained in:
+1
-1
@@ -73,7 +73,7 @@ class Phase3FinalUnifiedSqlContractTest {
|
||||
@Test
|
||||
void initializationPassIsUniqueAndFinal() throws Exception {
|
||||
String sql = sql();
|
||||
String pass = "SELECT 'PASS' AS initialization_status, 'CN' AS region, 210 AS initialized_tables;";
|
||||
String pass = "SELECT 'PASS' AS initialization_status, 'CN' AS region, 219 AS initialized_tables;";
|
||||
assertThat(count(sql, pass)).isEqualTo(1);
|
||||
assertThat(sql.trim()).endsWith(pass);
|
||||
assertThat(sql)
|
||||
|
||||
+52
@@ -0,0 +1,52 @@
|
||||
package com.baiyue.firstleg.sailingcalendar.fact;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.springframework.core.io.ClassPathResource;
|
||||
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
class SailingFactsSqlContractTest {
|
||||
@Test
|
||||
void definesVersionedReceiptForecastAssignmentAndBookingFacts() throws Exception {
|
||||
String sql = new ClassPathResource("db/phase4-sailing-facts-schema.sql")
|
||||
.getContentAsString(StandardCharsets.UTF_8);
|
||||
assertThat(sql)
|
||||
.contains("CREATE TABLE fl_sailing_receipt_batch_fact")
|
||||
.contains("CREATE TABLE fl_sailing_inbound_volume_forecast")
|
||||
.contains("CREATE TABLE fl_sailing_assignment")
|
||||
.contains("CREATE TABLE fl_sailing_booking_link")
|
||||
.contains("receipt_batch_key VARCHAR(64) NOT NULL")
|
||||
.contains("fact_version INT UNSIGNED NOT NULL")
|
||||
.contains("received_at DATETIME(3) NOT NULL")
|
||||
.contains("actual_volume_cbm DECIMAL(18,4) NOT NULL")
|
||||
.contains("expected_arrival_at DATETIME(3) NOT NULL")
|
||||
.contains("forecast_volume_cbm DECIMAL(18,4) NOT NULL")
|
||||
.contains("match_status IN ('FORECAST_MATCHED','RECEIVED','LATE','UNMATCHED','SUPERSEDED')")
|
||||
.contains("booking_status_snapshot='RELEASED'")
|
||||
.contains("UNIQUE KEY uk_sailing_booking_active (ocean_booking_id, active_booking_guard)");
|
||||
}
|
||||
|
||||
@Test
|
||||
void doesNotUseLegacyInboundTimestampOrDeclarationVolumeAsFact() throws Exception {
|
||||
String sql = new ClassPathResource("db/phase4-sailing-facts-schema.sql")
|
||||
.getContentAsString(StandardCharsets.UTF_8);
|
||||
assertThat(sql)
|
||||
.doesNotContain("inbounded_at DATETIME")
|
||||
.doesNotContain("original_volume_cbm DECIMAL");
|
||||
}
|
||||
|
||||
@Test
|
||||
void unifiedInitializationIncludesThePhase4FactsInTheFirstlegSchema() throws Exception {
|
||||
String unified = Files.readString(Path.of("../deploy/sql/头程数据库统一增量-MySQL8.sql"));
|
||||
assertThat(unified)
|
||||
.contains("-- phase4-sailing-calendar-schema.sql")
|
||||
.contains("-- phase4-sailing-facts-schema.sql")
|
||||
.contains("USE baiyue_firstleg;")
|
||||
.contains("CREATE TABLE fl_sailing_receipt_batch_fact")
|
||||
.contains("CREATE TABLE fl_sailing_booking_link");
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user