test(integration): align provider dispatch with canonical container contract

This commit is contained in:
2026-11-06 15:10:37 +08:00
parent 99f896848e
commit 6d8a69b995
@@ -7,9 +7,12 @@ import com.baiyue.integration.dto.CarrierScheduleDtos.ExceptionObservation;
import com.baiyue.integration.provider.CarrierScheduleProviderAdapter; import com.baiyue.integration.provider.CarrierScheduleProviderAdapter;
import com.baiyue.integration.provider.CompliantCarrierScheduleProviderAdapter; import com.baiyue.integration.provider.CompliantCarrierScheduleProviderAdapter;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.ValueSource;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.List; import java.util.List;
import java.util.Locale;
import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatThrownBy; import static org.assertj.core.api.Assertions.assertThatThrownBy;
@@ -25,21 +28,22 @@ class CarrierScheduleProviderServiceTest {
assertThat(result.exceptions()).isEmpty(); assertThat(result.exceptions()).isEmpty();
} }
@Test @ParameterizedTest
void onlyDispatchesNormalizedContainerNumberTracking() { @ValueSource(strings = {"ZCSU7881970", "ZCSU7881971", "LOCAL-2026-001"})
void onlyDispatchesNormalizedContainerNumberTracking(String containerNo) {
CarrierScheduleProviderAdapter capturing = new CarrierScheduleProviderAdapter() { CarrierScheduleProviderAdapter capturing = new CarrierScheduleProviderAdapter() {
@Override public boolean supports(String carrierCode) { return true; } @Override public boolean supports(String carrierCode) { return true; }
@Override public QueryResult query(QueryRequest request) { @Override public QueryResult query(QueryRequest request) {
assertThat(request.trackingType()).isEqualTo("CONTAINER_NO"); assertThat(request.trackingType()).isEqualTo("CONTAINER_NO");
assertThat(request.trackingNo()).isEqualTo("ZCSU7881970"); assertThat(request.trackingNo()).isEqualTo(containerNo);
return new QueryResult("TEST", "NO_CHANGE", List.of(), List.of(), null, null, LocalDateTime.now()); return new QueryResult("TEST", "NO_CHANGE", List.of(), List.of(), null, null, LocalDateTime.now());
} }
}; };
var service = new CarrierScheduleProviderService(List.of(capturing)); var service = new CarrierScheduleProviderService(List.of(capturing));
service.query(new QueryRequest("ZIM", "CONTAINER_NO", "ZCSU7881970")); service.query(new QueryRequest("ZIM", "CONTAINER_NO", containerNo));
assertThatThrownBy(() -> service.query(new QueryRequest("ZIM", "CONTAINER_NO", "zcsu7881970"))) assertThatThrownBy(() -> service.query(new QueryRequest("ZIM", "CONTAINER_NO", containerNo.toLowerCase(Locale.ROOT))))
.hasMessageContaining("规范化真实集装箱号"); .hasMessageContaining("规范化真实集装箱号");
assertThatThrownBy(() -> service.query(new QueryRequest("ZIM", "CONTAINER_NO", "ZCSU7881971"))) assertThatThrownBy(() -> service.query(new QueryRequest("ZIM", "CONTAINER_NO", " " + containerNo + " ")))
.hasMessageContaining("规范化真实集装箱号"); .hasMessageContaining("规范化真实集装箱号");
assertThatThrownBy(() -> service.query(new QueryRequest("ZIM", "BILL_OF_LADING", "BL-1"))) assertThatThrownBy(() -> service.query(new QueryRequest("ZIM", "BILL_OF_LADING", "BL-1")))
.hasMessageContaining("CONTAINER_NO"); .hasMessageContaining("CONTAINER_NO");