From a381d443da793a5bdae6bd0d8fc2c793a103bbdc Mon Sep 17 00:00:00 2001 From: ouyangxq <775153912@qq.com> Date: Wed, 19 Aug 2026 09:44:18 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/FeeManagementContractTest.java | 9 ++++++++- .../InternalFinanceFeeSourceControllerTest.java | 15 +++++++++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/firstleg/src/test/java/com/baiyue/firstleg/controller/FeeManagementContractTest.java b/firstleg/src/test/java/com/baiyue/firstleg/controller/FeeManagementContractTest.java index c90ae47ef..4df8b7ac2 100644 --- a/firstleg/src/test/java/com/baiyue/firstleg/controller/FeeManagementContractTest.java +++ b/firstleg/src/test/java/com/baiyue/firstleg/controller/FeeManagementContractTest.java @@ -58,7 +58,7 @@ class FeeManagementContractTest { .contains("ContainerFeeAdjustRequest:") .contains("required: [expectedSourceVersion, businessDate, amount]") .contains("additionalProperties: false") - .contains("费用方向、费用项目、往来单位、币种和备注保持原快照") + .contains("费用方向、费用项目、供应商、币种和备注保持原快照") .contains("旧版本异参、已作废或非已审核状态返回 A0409 且零写入"); } @@ -107,6 +107,13 @@ class FeeManagementContractTest { assertThat(stringMap(properties(schemas, "FeeItemSaveRequest").get("feeCode"))) .containsEntry("maxLength", 50) .containsEntry("pattern", "^[A-Za-z0-9_-]+$"); + Map supplierCategory = stringMap( + properties(schemas, "FeeItemSaveRequest").get("supplierCategory")); + assertThat(supplierCategory) + .containsEntry("nullable", true) + .containsEntry("enum", List.of("BOOKING", "CUSTOMS", "TRUCKING", "CERTIFICATE")); + assertThat(list(stringMap(schemas.get("FeeItemSaveRequest")).get("required"))) + .doesNotContain("supplierCategory"); } private static void assertPermission(String methodName, String permission) { diff --git a/firstleg/src/test/java/com/baiyue/firstleg/controller/InternalFinanceFeeSourceControllerTest.java b/firstleg/src/test/java/com/baiyue/firstleg/controller/InternalFinanceFeeSourceControllerTest.java index fa51fa04a..6241e98b7 100644 --- a/firstleg/src/test/java/com/baiyue/firstleg/controller/InternalFinanceFeeSourceControllerTest.java +++ b/firstleg/src/test/java/com/baiyue/firstleg/controller/InternalFinanceFeeSourceControllerTest.java @@ -3,8 +3,11 @@ package com.baiyue.firstleg.controller; import com.baiyue.common.core.exception.BizException; import com.baiyue.firstleg.service.FinanceFeeSourceSnapshotService; import org.junit.jupiter.api.Test; +import org.springframework.core.io.ClassPathResource; import org.springframework.test.util.ReflectionTestUtils; +import java.nio.charset.StandardCharsets; + import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; import static org.mockito.Mockito.mock; @@ -40,6 +43,18 @@ class InternalFinanceFeeSourceControllerTest { assertThat(methodPath("container")).isEqualTo("/containers/{containerId}/fees/{feeId}/source-snapshot"); } + @Test + void openApiRequiresExactSourceVersionAndDocumentsSupplierConstraint() throws Exception { + String source = new ClassPathResource("openapi/firstleg-v1.yaml") + .getContentAsString(StandardCharsets.UTF_8); + assertThat(source) + .contains("/internal/firstleg/v1/inbounds/{inboundId}/fees/{feeId}/source-snapshot:") + .contains("/internal/firstleg/v1/containers/{containerId}/fees/{feeId}/source-snapshot:") + .contains("{name: sourceVersion, in: query, required: true") + .contains("supplierCategory: {type: string, enum: [BOOKING, CUSTOMS, TRUCKING, CERTIFICATE], nullable: true") + .contains("为空时仅要求供应商ACTIVE"); + } + private InternalFinanceFeeSourceController controller() { InternalFinanceFeeSourceController value = new InternalFinanceFeeSourceController(service); ReflectionTestUtils.setField(value, "expectedToken", "finance-token");