2026-09-07 23:58:18 +08:00
|
|
|
package com.baiyue.lastleg.inboundplan;
|
|
|
|
|
|
2026-09-08 11:00:39 +08:00
|
|
|
import com.baiyue.lastleg.inboundplan.dto.ManualInboundPlanRequest;
|
2026-09-07 23:58:18 +08:00
|
|
|
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 TailPlanCommandOpenApiContractTest {
|
|
|
|
|
@Test
|
|
|
|
|
void exposesOnlyLatestManualPlanHoldAndEightRowNodeContracts() throws Exception {
|
|
|
|
|
try (var stream = getClass().getClassLoader()
|
|
|
|
|
.getResourceAsStream("openapi/overseas-business-v1.yaml")) {
|
|
|
|
|
assertTrue(stream != null);
|
|
|
|
|
String api = new String(stream.readAllBytes(), StandardCharsets.UTF_8);
|
|
|
|
|
assertTrue(api.contains("/api/platform/v1/last-leg/inbound-plans/manual:"));
|
|
|
|
|
assertFalse(api.contains("/api/platform/v1/last-leg/inbound-plans/convert:"));
|
2026-09-08 11:00:39 +08:00
|
|
|
assertFalse(api.contains("plannedWarehouseId"));
|
|
|
|
|
assertFalse(api.contains("plannedWarehouseCode"));
|
|
|
|
|
assertFalse(api.contains("plannedWarehouseName"));
|
|
|
|
|
int manualSchemaStart = api.indexOf(" ManualInboundPlanRequest:");
|
|
|
|
|
int manualSchemaEnd = api.indexOf("\n PageMetadata:", manualSchemaStart);
|
|
|
|
|
assertTrue(manualSchemaStart >= 0 && manualSchemaEnd > manualSchemaStart);
|
|
|
|
|
assertFalse(api.substring(manualSchemaStart, manualSchemaEnd).contains("inboundCode"));
|
2026-09-15 13:36:58 +08:00
|
|
|
assertFalse(api.substring(manualSchemaStart, manualSchemaEnd).contains("plannedArrivalDate"));
|
2026-09-08 11:00:39 +08:00
|
|
|
assertFalse(java.util.Arrays.stream(ManualInboundPlanRequest.class.getRecordComponents())
|
2026-09-15 13:36:58 +08:00
|
|
|
.anyMatch(component -> java.util.Set.of("inboundCode", "plannedArrivalDate")
|
|
|
|
|
.contains(component.getName())));
|
2026-09-07 23:58:18 +08:00
|
|
|
assertTrue(api.contains("/api/platform/v1/last-leg/orders/{id}/hold:"));
|
|
|
|
|
assertFalse(api.contains("/api/platform/v1/last-leg/orders/{id}/detained:"));
|
|
|
|
|
assertTrue(api.contains("/api/platform/v1/last-leg/orders/{id}/manual-nodes:"));
|
|
|
|
|
assertTrue(api.contains("minItems: 8"));
|
|
|
|
|
assertTrue(api.contains("maxItems: 8"));
|
|
|
|
|
assertTrue(api.contains("ACTUAL_ARRIVAL_WAITING_UNLOAD"));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|