diff --git a/boot/common-framework/src/test/java/com/klaro/acquirecore/framework/util/DateUtilTest.java b/boot/common-framework/src/test/java/com/klaro/acquirecore/framework/util/DateUtilTest.java new file mode 100644 index 0000000..d40e7d2 --- /dev/null +++ b/boot/common-framework/src/test/java/com/klaro/acquirecore/framework/util/DateUtilTest.java @@ -0,0 +1,161 @@ +package com.klaro.acquirecore.framework.util; + +import org.junit.jupiter.api.Test; + +import java.time.LocalDate; +import java.time.LocalDateTime; + +import static org.junit.jupiter.api.Assertions.*; + +class DateUtilTest { + + @Test + void parseDate_withValidDateString_returnsLocalDate() { + LocalDate result = DateUtil.parseDate("2024-01-15"); + assertEquals(LocalDate.of(2024, 1, 15), result); + } + + @Test + void parseDate_withNull_throwsException() { + assertThrows(NullPointerException.class, () -> DateUtil.parseDate(null)); + } + + @Test + void formatDate_withValidDate_returnsFormattedString() { + LocalDate date = LocalDate.of(2024, 1, 15); + String result = DateUtil.formatDate(date); + assertEquals("2024-01-15", result); + } + + @Test + void formatDate_withNull_throwsException() { + assertThrows(NullPointerException.class, () -> DateUtil.formatDate(null)); + } + + @Test + void daysBetween_calculatesCorrectDays() { + LocalDate start = LocalDate.of(2024, 1, 1); + LocalDate end = LocalDate.of(2024, 1, 11); + long result = DateUtil.daysBetween(start, end); + assertEquals(10, result); + } + + @Test + void addDays_addsCorrectDays() { + LocalDate date = LocalDate.of(2024, 1, 15); + LocalDate result = DateUtil.addDays(date, 5); + assertEquals(LocalDate.of(2024, 1, 20), result); + } + + @Test + void addDays_withNegativeValue_subtractsDays() { + LocalDate date = LocalDate.of(2024, 1, 15); + LocalDate result = DateUtil.addDays(date, -5); + assertEquals(LocalDate.of(2024, 1, 10), result); + } + + @Test + void isBetween_withDateInRange_returnsTrue() { + LocalDate date = LocalDate.of(2024, 6, 15); + LocalDate start = LocalDate.of(2024, 1, 1); + LocalDate end = LocalDate.of(2024, 12, 31); + assertTrue(DateUtil.isBetween(date, start, end)); + } + + @Test + void isBetween_withDateOutOfRange_returnsFalse() { + LocalDate date = LocalDate.of(2025, 1, 1); + LocalDate start = LocalDate.of(2024, 1, 1); + LocalDate end = LocalDate.of(2024, 12, 31); + assertFalse(DateUtil.isBetween(date, start, end)); + } + + @Test + void isValidDate_withValidDate_returnsTrue() { + assertTrue(DateUtil.isValidDate("2024-01-15")); + } + + @Test + void isValidDate_withInvalidDate_returnsFalse() { + assertFalse(DateUtil.isValidDate("invalid-date")); + } + + @Test + void isValidDate_withNull_returnsFalse() { + assertFalse(DateUtil.isValidDate(null)); + } + + @Test + void today_returnsCurrentDate() { + LocalDate result = DateUtil.today(); + assertEquals(LocalDate.now(), result); + } + + @Test + void now_returnsCurrentDateTime() { + LocalDateTime result = DateUtil.now(); + assertNotNull(result); + } + + @Test + void parseDateTime_withValidDateTimeString_returnsLocalDateTime() { + LocalDateTime result = DateUtil.parseDateTime("2024-01-15 10:30:45"); + assertEquals(LocalDateTime.of(2024, 1, 15, 10, 30, 45), result); + } + + @Test + void formatDateTime_withValidDateTime_returnsFormattedString() { + LocalDateTime dateTime = LocalDateTime.of(2024, 1, 15, 10, 30, 45); + String result = DateUtil.formatDateTime(dateTime); + assertEquals("2024-01-15 10:30:45", result); + } + + @Test + void formatDateKorean_withValidDate_returnsKoreanFormat() { + LocalDate date = LocalDate.of(2024, 1, 15); + String result = DateUtil.formatDateKorean(date); + assertEquals("2024년 01월 15일", result); + } + + @Test + void startOfDay_returnsStartOfDayDateTime() { + LocalDate date = LocalDate.of(2024, 1, 15); + LocalDateTime result = DateUtil.startOfDay(date); + assertEquals(LocalDateTime.of(2024, 1, 15, 0, 0, 0), result); + } + + @Test + void endOfDay_returnsEndOfDayDateTime() { + LocalDate date = LocalDate.of(2024, 1, 15); + LocalDateTime result = DateUtil.endOfDay(date); + assertEquals(LocalDateTime.of(2024, 1, 15, 23, 59, 59, 999999999), result); + } + + @Test + void addMonths_addsCorrectMonths() { + LocalDate date = LocalDate.of(2024, 1, 15); + LocalDate result = DateUtil.addMonths(date, 3); + assertEquals(LocalDate.of(2024, 4, 15), result); + } + + @Test + void addYears_addsCorrectYears() { + LocalDate date = LocalDate.of(2024, 1, 15); + LocalDate result = DateUtil.addYears(date, 1); + assertEquals(LocalDate.of(2025, 1, 15), result); + } + + @Test + void isBefore_withEarlierDate_returnsTrue() { + LocalDate date = LocalDate.of(2024, 1, 15); + LocalDate dateToCompare = LocalDate.of(2024, 1, 20); + assertTrue(DateUtil.isBefore(date, dateToCompare)); + } + + @Test + void isAfter_withLaterDate_returnsTrue() { + LocalDate date = LocalDate.of(2024, 1, 20); + LocalDate dateToCompare = LocalDate.of(2024, 1, 15); + assertTrue(DateUtil.isAfter(date, dateToCompare)); + } +}