package com.baiyue.lastleg.procurement; import org.junit.jupiter.api.Test; import java.nio.charset.StandardCharsets; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertTrue; class OverseasProcurementOpenApiContractTest { @Test void procurementContractDocumentsCandidatesClearSemanticsAndExcludesOutbound() throws Exception { String yaml; try (var input = getClass().getResourceAsStream("/openapi/overseas-business-v1.yaml")) { yaml = new String(input.readAllBytes(), StandardCharsets.UTF_8); } assertTrue(yaml.contains("/customer-options:")); assertTrue(yaml.contains("/warehouse-options:")); assertTrue(yaml.contains("显式 null 或空串表示清空")); assertTrue(yaml.contains("platform:overseas-business:purchase:list")); assertTrue(yaml.contains("platform:overseas-business:purchase:edit")); assertFalse(yaml.contains("/outbounds")); assertFalse(yaml.contains("采购出库单")); } @Test void contractContainsPlatformTruckWritesAndIndependentLooseboardDomain() throws Exception { String yaml; try (var input = getClass().getResourceAsStream("/openapi/overseas-business-v1.yaml")) { yaml = new String(input.readAllBytes(), StandardCharsets.UTF_8); } assertTrue(yaml.contains("platform:overseas-business:truck:create")); assertTrue(yaml.contains("platform:overseas-business:truck:edit")); assertTrue(yaml.contains("/api/platform/v1/last-leg/local-looseboard-orders:")); assertTrue(yaml.contains("platform:overseas-business:looseboard:list")); assertTrue(yaml.contains("platform:overseas-business:looseboard:create")); assertTrue(yaml.contains("platform:overseas-business:looseboard:edit")); assertTrue(yaml.contains("platform:overseas-business:looseboard:status")); assertFalse(yaml.contains("/api/platform/v1/last-leg/outbound")); assertFalse(yaml.contains("/api/platform/v1/last-leg/delivery")); } }