diff --git a/src/main/kotlin/roomescape/common/util/DateUtils.kt b/src/main/kotlin/roomescape/common/util/DateUtils.kt new file mode 100644 index 00000000..4ad16583 --- /dev/null +++ b/src/main/kotlin/roomescape/common/util/DateUtils.kt @@ -0,0 +1,11 @@ +package roomescape.common.util + +import java.time.DayOfWeek +import java.time.LocalDate +import java.time.temporal.TemporalAdjusters + +object DateUtils { + fun getSundayOfPreviousWeek(date: LocalDate): LocalDate = date + .minusWeeks(1) + .with(TemporalAdjusters.previousOrSame(DayOfWeek.SUNDAY)) +} diff --git a/src/test/kotlin/roomescape/common/util/DateUtilsTest.kt b/src/test/kotlin/roomescape/common/util/DateUtilsTest.kt new file mode 100644 index 00000000..30a2c6b3 --- /dev/null +++ b/src/test/kotlin/roomescape/common/util/DateUtilsTest.kt @@ -0,0 +1,15 @@ +package roomescape.common.util + +import io.kotest.core.spec.style.StringSpec +import io.kotest.matchers.shouldBe +import java.time.LocalDate + +class DateUtilsTest : StringSpec({ + "입력된 날짜의 이전 주 일요일을 찾는다." { + val expected = LocalDate.of(2025, 8, 31) + + for (i in 7..13){ + DateUtils.getSundayOfPreviousWeek(LocalDate.of(2025, 9, i)) shouldBe expected + } + } +})