feat: complete overseas customer and PDA workflows
This commit is contained in:
+47
@@ -0,0 +1,47 @@
|
||||
package com.baiyue.lastleg.merchant;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import java.nio.charset.StandardCharsets;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
class MerchantOverseasOpenApiContractTest {
|
||||
@Test
|
||||
void documentsFrozenMerchantPathsPermissionsResponsesAndConflictSemantics() throws Exception {
|
||||
String yaml;
|
||||
try (var input = getClass().getResourceAsStream("/openapi/overseas-business-v1.yaml")) {
|
||||
assertThat(input).isNotNull();
|
||||
yaml = new String(input.readAllBytes(), StandardCharsets.UTF_8);
|
||||
}
|
||||
|
||||
for (String path : new String[] {
|
||||
"/api/merchant/v1/last-leg/overseas-procurements:",
|
||||
"/api/merchant/v1/last-leg/overseas-procurements/{orderNo}:",
|
||||
"/api/merchant/v1/last-leg/us-truck-orders:",
|
||||
"/api/merchant/v1/last-leg/us-truck-orders/{orderNo}:",
|
||||
"/api/merchant/v1/last-leg/local-looseboard-orders:",
|
||||
"/api/merchant/v1/last-leg/local-looseboard-orders/{orderNo}:",
|
||||
"/api/merchant/v1/last-leg/inbound-plans:",
|
||||
"/api/merchant/v1/last-leg/inbound-plans/{planNo}:"}) {
|
||||
assertThat(yaml).contains(path);
|
||||
assertThat(pathBlock(yaml, path)).doesNotContain("name: customerId");
|
||||
}
|
||||
assertThat(yaml).contains("merchant:cross-border:procurement")
|
||||
.contains("merchant:cross-border:domestic-trucking")
|
||||
.contains("merchant:cross-border:pallet-shipping")
|
||||
.contains("merchant:warehouse:inbound:list")
|
||||
.contains("#/components/schemas/ProcurementDetailResponse")
|
||||
.contains("#/components/schemas/TruckDetailResponse")
|
||||
.contains("#/components/schemas/LooseboardDetailResponse")
|
||||
.contains("#/components/schemas/InboundPlanDetailResponse")
|
||||
.contains("PENDING_REVIEW").contains("PENDING_ACCEPTANCE")
|
||||
.contains("version 必填").contains("幂等冲突");
|
||||
}
|
||||
|
||||
private static String pathBlock(String yaml, String path) {
|
||||
int start = yaml.indexOf(" " + path);
|
||||
int end = yaml.indexOf("\n /api/", start + path.length());
|
||||
return yaml.substring(start, end < 0 ? yaml.length() : end);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user