35 lines
1.5 KiB
Java
35 lines
1.5 KiB
Java
package com.baiyue.common.event;
|
|
|
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
|
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
|
|
import org.junit.jupiter.api.Test;
|
|
|
|
import java.time.Instant;
|
|
|
|
import static org.assertj.core.api.Assertions.assertThat;
|
|
import static org.assertj.core.api.Assertions.assertThatThrownBy;
|
|
|
|
class OverseasContainerUnloadedV1Test {
|
|
private final ObjectMapper mapper = new ObjectMapper().registerModule(new JavaTimeModule());
|
|
|
|
@Test
|
|
void payloadRoundTripsWithStableContainerIdAndUtcFacts() throws Exception {
|
|
var payload = new OverseasContainerUnloadedV1("1001", "ZCSU7881970",
|
|
Instant.parse("2026-08-20T03:00:00Z"), Instant.parse("2026-08-20T02:30:00Z"), null);
|
|
|
|
String json = mapper.writeValueAsString(payload);
|
|
|
|
assertThat(mapper.readValue(json, OverseasContainerUnloadedV1.class)).isEqualTo(payload);
|
|
assertThat(json).contains("sourceContainerBookingId", "1001", "ZCSU7881970", "unloadingPhotoUploadedAt");
|
|
assertThat(payload.unloadingCompletedAt()).isAfter(payload.unloadingPhotoUploadedAt());
|
|
assertThat(payload.unloadingCompletedAt()).isNotEqualTo(payload.unloadingPhotoUploadedAt());
|
|
}
|
|
|
|
@Test
|
|
void rejectsContainerNumberDriftBeforeDomesticConsumption() {
|
|
assertThatThrownBy(() -> new OverseasContainerUnloadedV1("1001", "zcsu7881970",
|
|
Instant.parse("2026-08-20T03:00:00Z"), Instant.parse("2026-08-20T02:30:00Z"), null))
|
|
.hasMessageContaining("normalized");
|
|
}
|
|
}
|