Files
baiyue-firstleg/lastleg-service/src/test/java/com/baiyue/lastleg/dispatch/SmartDispatchOpenApiContractTest.java
T

58 lines
3.7 KiB
Java
Raw Normal View History

2026-08-21 11:43:03 +08:00
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/drafts/pre-arrange:"));
assertTrue(yaml.contains("required: [draftToken, groups]"));
assertTrue(yaml.contains("required: [draftContainerId, planPalletIds, returnReceiptIds]"));
assertTrue(yaml.contains("SmartDispatchDraftGroupResult:"));
2026-08-21 17:21:26 +08:00
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:"));
2026-08-22 10:20:38 +08:00
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] }"));
2026-08-22 10:20:38 +08:00
assertTrue(yaml.contains("SmartDispatchDraft:"));
2026-08-21 11:43:03 +08:00
assertTrue(yaml.contains("platform:overseas-warehouse:inbound-order:list"));
2026-08-21 14:42:40 +08:00
assertTrue(yaml.contains("platform:overseas-warehouse:inbound-order:smart-dispatch"));
2026-08-21 11:43:03 +08:00
assertTrue(yaml.contains("SmartDispatchPreArrange"));
assertTrue(yaml.contains("SmartDispatchCandidate"));
2026-09-18 11:41:04 +08:00
assertTrue(yaml.contains("overseasWarehouseCode: { type: string, nullable: true, description: 实际海外接柜仓编码"));
assertTrue(yaml.contains("grossWeightKg: { type: number, nullable: true, description: 候选托盘分摊毛重"));
assertTrue(yaml.contains("禁止使用体积重替代"));
2026-09-15 14:30:47 +08:00
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:"));
2026-09-18 11:41:04 +08:00
assertTrue(updateSchema.contains("departAt: { type: string, format: date-time, nullable: true }"));
2026-08-21 14:42:40 +08:00
assertTrue(yaml.contains("name: planIds"));
2026-08-21 17:21:26 +08:00
String planIdsParameter = yaml.substring(yaml.indexOf("name: planIds"),
yaml.indexOf("name: orderNo", yaml.indexOf("name: planIds")));
assertTrue(planIdsParameter.contains("required: false"));
2026-08-28 16:54:21 +08:00
String dispatchContract = yaml.substring(yaml.indexOf("/api/platform/v1/last-leg/dispatches:"),
yaml.indexOf("/api/platform/v1/last-leg/outbound-orders:"));
2026-08-21 11:43:03 +08:00
assertFalse(dispatchContract.contains("name: customerId"));
assertFalse(yaml.contains("/api/platform/v1/last-leg/dispatches/{dispatchNo}/depart:"));
}
}