From 6acb5297e5340603118fd0accf8867f005dee320 Mon Sep 17 00:00:00 2001 From: ouyangxq <775153912@qq.com> Date: Wed, 2 Sep 2026 10:45:09 +0800 Subject: [PATCH] test(firstleg): lock internal declaration endpoints --- ...alInboundOrderReferenceControllerTest.java | 22 +++++++++++++++++++ ...rderDeclarationSyncMapperContractTest.java | 15 +++++++++++++ 2 files changed, 37 insertions(+) diff --git a/firstleg/src/test/java/com/baiyue/firstleg/controller/InternalInboundOrderReferenceControllerTest.java b/firstleg/src/test/java/com/baiyue/firstleg/controller/InternalInboundOrderReferenceControllerTest.java index 80f3bc3b6..93c24882d 100644 --- a/firstleg/src/test/java/com/baiyue/firstleg/controller/InternalInboundOrderReferenceControllerTest.java +++ b/firstleg/src/test/java/com/baiyue/firstleg/controller/InternalInboundOrderReferenceControllerTest.java @@ -8,6 +8,7 @@ import com.baiyue.firstleg.service.InboundCartonLabelService; import com.baiyue.firstleg.service.UnifiedInboundQueryService; import com.baiyue.firstleg.service.OrderDeclarationSyncService; import com.baiyue.firstleg.dto.UnifiedInboundQuery; +import com.baiyue.firstleg.dto.OrderDeclarationSync; import com.baiyue.common.core.api.PageResult; import jakarta.annotation.Resource; import org.junit.jupiter.api.Test; @@ -16,6 +17,7 @@ import org.springframework.test.context.TestPropertySource; import org.springframework.test.context.junit.jupiter.SpringJUnitConfig; import java.util.List; +import java.time.LocalDateTime; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; @@ -88,6 +90,26 @@ class InternalInboundOrderReferenceControllerTest { verify(cartonLabels).getOrCreate(10001L, 88L); } + @Test + void exposesExactOrderChannelValidationContract() { + var request = new OrderDeclarationSync.ChannelChangeValidationRequest(10001L, 77L, 4L, "MATSON_NEW"); + var result = new OrderDeclarationSync.ChannelChangeValidationResponse(77L, 4L, "MATSON_NEW", "WAIT_SPLIT"); + when(declarationSync.validateChannelChange(request)).thenReturn(result); + + assertThat(controller.validateOrderChannelChange("internal-token", request).data()).isEqualTo(result); + verify(declarationSync).validateChannelChange(request); + } + + @Test + void exposesExactDeclarationEventConsumerContract() { + var event = new OrderDeclarationSync.UpdatedEvent(1, "event-4", 10001L, 77L, "FL-77", "RK-77", + 4, 9L, LocalDateTime.of(2026, 9, 2, 10, 0), null, null, "MATSON_NEW", "新渠道", + true, List.of(), List.of()); + + assertThat(controller.updateOrderDeclaration("internal-token", event).successful()).isTrue(); + verify(declarationSync).consume(event); + } + private static OrderApprovedInboundCommand approvedCommand(String inboundCode, Long carrierId) { return new OrderApprovedInboundCommand( 10001L, 77L, "FL-77", inboundCode, 7L, "测试客户", 9L, "义乌仓", diff --git a/firstleg/src/test/java/com/baiyue/firstleg/mapper/OrderDeclarationSyncMapperContractTest.java b/firstleg/src/test/java/com/baiyue/firstleg/mapper/OrderDeclarationSyncMapperContractTest.java index be6d65a6f..8605921a9 100644 --- a/firstleg/src/test/java/com/baiyue/firstleg/mapper/OrderDeclarationSyncMapperContractTest.java +++ b/firstleg/src/test/java/com/baiyue/firstleg/mapper/OrderDeclarationSyncMapperContractTest.java @@ -3,6 +3,9 @@ package com.baiyue.firstleg.mapper; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Update; import org.junit.jupiter.api.Test; +import org.springframework.core.io.ClassPathResource; + +import java.nio.charset.StandardCharsets; import static org.assertj.core.api.Assertions.assertThat; @@ -20,4 +23,16 @@ class OrderDeclarationSyncMapperContractTest { .doesNotContain("actual_net_weight", "actual_volume", "fee_status", "SET inbound_code", "pallet", "box_code", "process_status"); } + + @Test + void sqlBaselineKeepsCurrentSnapshotAndPermanentEventLedgerSeparate() throws Exception { + String sql = new ClassPathResource("db/phase2-inbound-schema.sql") + .getContentAsString(StandardCharsets.UTF_8); + + assertThat(sql) + .contains("CREATE TABLE IF NOT EXISTS fl_order_declaration_snapshot") + .contains("CREATE TABLE IF NOT EXISTS fl_order_declaration_event") + .contains("PRIMARY KEY (tenant_id, event_id)") + .contains("不覆盖实测事实"); + } }