package jnpf.dmsService; import jnpf.exception.DataException; import org.junit.jupiter.api.Test; import java.time.LocalDate; import java.time.ZoneId; import java.util.Date; import static org.junit.jupiter.api.Assertions.*; class DmsDownloadDeadlineTest { @Test void usesApplicationDaysInsteadOfFixedHours() { ZoneId zone = ZoneId.of("Asia/Shanghai"); Date expected = Date.from(LocalDate.now(zone).plusDays(3).atTime(23, 59, 59).atZone(zone).toInstant()); assertEquals(expected, DmsDownloadDeadline.resolve("3", "detail-1")); } @Test void zeroDaysEndsToday() { ZoneId zone = ZoneId.of("Asia/Shanghai"); assertEquals(Date.from(LocalDate.now(zone).atTime(23, 59, 59).atZone(zone).toInstant()), DmsDownloadDeadline.resolve("0", "detail-1")); } @Test void noDeadlineMustBeExplicit() { assertNull(DmsDownloadDeadline.resolve(" na ", "detail-1")); assertThrows(DataException.class, () -> DmsDownloadDeadline.resolve(null, "detail-1")); assertThrows(DataException.class, () -> DmsDownloadDeadline.resolve("", "detail-1")); } @Test void rejectsInvalidApplicationDeadline() { assertThrows(DataException.class, () -> DmsDownloadDeadline.resolve("-1", "detail-1")); assertThrows(DataException.class, () -> DmsDownloadDeadline.resolve("invalid", "detail-1")); } }