package jnpf.dmsService;
|
|
import jnpf.exception.DataException;
|
import org.junit.jupiter.api.Test;
|
import java.time.Instant;
|
import java.util.Date;
|
import static org.junit.jupiter.api.Assertions.*;
|
|
class DmsApprovedFileDatesTest {
|
private Date at(String instant) { return Date.from(Instant.parse(instant)); }
|
@Test void formalDateUsesShanghaiMidnightWithoutMovingToRegistrationTime() {
|
assertEquals(at("2026-09-19T16:00:00Z"), DmsApprovedFileDates.scheduled(at("2026-09-20T03:00:00Z")));
|
assertEquals(at("2026-09-13T16:00:00Z"), DmsApprovedFileDates.scheduled(at("2026-09-14T00:00:00Z")));
|
}
|
@Test void formalEffectiveDateIsRequired() {
|
assertThrows(DataException.class, () -> DmsApprovedFileDates.scheduled(null));
|
}
|
@Test void revocationAndInvalidationNeverRunBeforeApproval() {
|
Date approved = at("2026-09-17T04:30:00Z");
|
assertEquals(approved, DmsApprovedFileDates.disableScheduled(null, approved));
|
assertEquals(approved, DmsApprovedFileDates.disableScheduled(at("2026-09-16T16:00:00Z"), approved));
|
assertEquals(approved, DmsApprovedFileDates.disableScheduled(at("2026-09-10T16:00:00Z"), approved));
|
assertThrows(DataException.class, () -> DmsApprovedFileDates.disableScheduled(null, null));
|
}
|
@Test void futureDisableDateUsesShanghaiMidnightAndEachFileKeepsItsDate() {
|
Date approved = at("2026-09-17T04:30:00Z");
|
assertEquals(at("2026-09-17T16:00:00Z"),
|
DmsApprovedFileDates.disableScheduled(at("2026-09-18T06:00:00Z"), approved));
|
assertEquals(at("2026-09-19T16:00:00Z"),
|
DmsApprovedFileDates.disableScheduled(at("2026-09-20T06:00:00Z"), approved));
|
}
|
@Test void expiryIncludesEntireBusinessDayAndRejectsExpiredInput() {
|
assertEquals(at("2026-09-20T16:00:00Z"), DmsApprovedFileDates.expires(at("2026-09-20T00:00:00Z"), at("2026-09-20T05:00:00Z")));
|
assertThrows(DataException.class, () -> DmsApprovedFileDates.expires(at("2026-09-20T00:00:00Z"), at("2026-09-20T16:00:00Z")));
|
}
|
}
|