package com.baiyue.lastleg.dispatch; 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 SmartDispatchOpenApiContractTest { @Test void contractDocumentsOnlyCandidateAndPreArrangeSmartDispatchWrites() 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("/api/platform/v1/last-leg/dispatches/candidates:")); assertTrue(yaml.contains("/api/platform/v1/last-leg/dispatches/pre-arrange:")); assertTrue(yaml.contains("/api/platform/v1/last-leg/dispatches/draft-locks/lock:")); assertTrue(yaml.contains("/api/platform/v1/last-leg/dispatches/draft-locks/unlock:")); assertTrue(yaml.contains("/api/platform/v1/last-leg/dispatches/draft-locks/release:")); assertTrue(yaml.contains("/api/platform/v1/last-leg/dispatches/drafts:")); assertTrue(yaml.contains("/api/platform/v1/last-leg/dispatches/drafts/snapshot:")); assertTrue(yaml.contains("/api/platform/v1/last-leg/dispatches/drafts/containers:")); assertTrue(yaml.contains("/api/platform/v1/last-leg/dispatches/drafts/{draftToken}/containers/{containerId}:")); assertTrue(yaml.contains("draftContainerId:")); assertTrue(yaml.contains("SmartDispatchDraftContainer:")); assertTrue(yaml.contains("capacity: { type: integer, enum: [15, 30] }")); assertTrue(yaml.contains("SmartDispatchDraft:")); assertTrue(yaml.contains("platform:overseas-warehouse:inbound-order:list")); assertTrue(yaml.contains("platform:overseas-warehouse:inbound-order:smart-dispatch")); assertTrue(yaml.contains("SmartDispatchPreArrange")); assertTrue(yaml.contains("SmartDispatchCandidate")); String preArrangeSchema = yaml.substring(yaml.indexOf(" SmartDispatchPreArrange:"), yaml.indexOf(" SmartDispatchDraftPallet:")); String updateSchema = yaml.substring(yaml.indexOf(" DispatchUpdate:"), yaml.indexOf(" DeliveryTransfer:")); assertFalse(preArrangeSchema.contains("route:")); assertFalse(updateSchema.contains("route:")); assertTrue(yaml.contains("name: planIds")); String planIdsParameter = yaml.substring(yaml.indexOf("name: planIds"), yaml.indexOf("name: orderNo", yaml.indexOf("name: planIds"))); assertTrue(planIdsParameter.contains("required: false")); String dispatchContract = yaml.substring(yaml.indexOf("/api/platform/v1/last-leg/dispatches:"), yaml.indexOf("/api/platform/v1/last-leg/outbound-orders:")); assertFalse(dispatchContract.contains("name: customerId")); assertFalse(yaml.contains("/api/platform/v1/last-leg/dispatches/{dispatchNo}/depart:")); } }