diff --git a/app/src/main/java/kr/co/vividnext/sodalive/v2/main/content/model/MainContentAllDayOfWeekMapper.kt b/app/src/main/java/kr/co/vividnext/sodalive/v2/main/content/model/MainContentAllDayOfWeekMapper.kt new file mode 100644 index 00000000..6ac3aba4 --- /dev/null +++ b/app/src/main/java/kr/co/vividnext/sodalive/v2/main/content/model/MainContentAllDayOfWeekMapper.kt @@ -0,0 +1,40 @@ +package kr.co.vividnext.sodalive.v2.main.content.model + +import kr.co.vividnext.sodalive.R +import kr.co.vividnext.sodalive.home.SeriesPublishedDaysOfWeek +import java.util.Calendar + +val contentAllDayOfWeekOptions: List = listOf( + SeriesPublishedDaysOfWeek.MON, + SeriesPublishedDaysOfWeek.TUE, + SeriesPublishedDaysOfWeek.WED, + SeriesPublishedDaysOfWeek.THU, + SeriesPublishedDaysOfWeek.FRI, + SeriesPublishedDaysOfWeek.SAT, + SeriesPublishedDaysOfWeek.SUN, + SeriesPublishedDaysOfWeek.RANDOM +) + +fun currentDeviceDayOfWeek(calendar: Calendar = Calendar.getInstance()): SeriesPublishedDaysOfWeek { + return when (calendar.get(Calendar.DAY_OF_WEEK)) { + Calendar.MONDAY -> SeriesPublishedDaysOfWeek.MON + Calendar.TUESDAY -> SeriesPublishedDaysOfWeek.TUE + Calendar.WEDNESDAY -> SeriesPublishedDaysOfWeek.WED + Calendar.THURSDAY -> SeriesPublishedDaysOfWeek.THU + Calendar.FRIDAY -> SeriesPublishedDaysOfWeek.FRI + Calendar.SATURDAY -> SeriesPublishedDaysOfWeek.SAT + Calendar.SUNDAY -> SeriesPublishedDaysOfWeek.SUN + else -> SeriesPublishedDaysOfWeek.RANDOM + } +} + +fun SeriesPublishedDaysOfWeek.toContentAllDayLabelResId(): Int = when (this) { + SeriesPublishedDaysOfWeek.MON -> R.string.day_mon_short + SeriesPublishedDaysOfWeek.TUE -> R.string.day_tue_short + SeriesPublishedDaysOfWeek.WED -> R.string.day_wed_short + SeriesPublishedDaysOfWeek.THU -> R.string.day_thu_short + SeriesPublishedDaysOfWeek.FRI -> R.string.day_fri_short + SeriesPublishedDaysOfWeek.SAT -> R.string.day_sat_short + SeriesPublishedDaysOfWeek.SUN -> R.string.day_sun_short + SeriesPublishedDaysOfWeek.RANDOM -> R.string.screen_content_all_day_other +} diff --git a/app/src/test/java/kr/co/vividnext/sodalive/v2/main/content/MainContentAllDayOfWeekMapperTest.kt b/app/src/test/java/kr/co/vividnext/sodalive/v2/main/content/MainContentAllDayOfWeekMapperTest.kt new file mode 100644 index 00000000..d3af27fd --- /dev/null +++ b/app/src/test/java/kr/co/vividnext/sodalive/v2/main/content/MainContentAllDayOfWeekMapperTest.kt @@ -0,0 +1,39 @@ +package kr.co.vividnext.sodalive.v2.main.content + +import kr.co.vividnext.sodalive.R +import kr.co.vividnext.sodalive.home.SeriesPublishedDaysOfWeek +import kr.co.vividnext.sodalive.v2.main.content.model.currentDeviceDayOfWeek +import kr.co.vividnext.sodalive.v2.main.content.model.toContentAllDayLabelResId +import org.junit.Assert.assertEquals +import org.junit.Test +import java.util.Calendar + +class MainContentAllDayOfWeekMapperTest { + + @Test + fun `Calendar 요일은 SeriesPublishedDaysOfWeek로 매핑된다`() { + assertEquals(SeriesPublishedDaysOfWeek.MON, mappedDay(Calendar.MONDAY)) + assertEquals(SeriesPublishedDaysOfWeek.TUE, mappedDay(Calendar.TUESDAY)) + assertEquals(SeriesPublishedDaysOfWeek.WED, mappedDay(Calendar.WEDNESDAY)) + assertEquals(SeriesPublishedDaysOfWeek.THU, mappedDay(Calendar.THURSDAY)) + assertEquals(SeriesPublishedDaysOfWeek.FRI, mappedDay(Calendar.FRIDAY)) + assertEquals(SeriesPublishedDaysOfWeek.SAT, mappedDay(Calendar.SATURDAY)) + assertEquals(SeriesPublishedDaysOfWeek.SUN, mappedDay(Calendar.SUNDAY)) + } + + @Test + fun `RANDOM 요일 라벨은 전체 탭 기타 문자열을 사용한다`() { + assertEquals( + R.string.screen_content_all_day_other, + SeriesPublishedDaysOfWeek.RANDOM.toContentAllDayLabelResId() + ) + } + + private fun mappedDay(dayOfWeek: Int): SeriesPublishedDaysOfWeek { + return currentDeviceDayOfWeek( + Calendar.getInstance().apply { + set(Calendar.DAY_OF_WEEK, dayOfWeek) + } + ) + } +}