diff --git a/app/src/main/java/kr/co/vividnext/sodalive/v2/main/content/ContentAllTabViewModel.kt b/app/src/main/java/kr/co/vividnext/sodalive/v2/main/content/ContentAllTabViewModel.kt index 36c18638..79253773 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/v2/main/content/ContentAllTabViewModel.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/v2/main/content/ContentAllTabViewModel.kt @@ -63,6 +63,13 @@ class ContentAllTabViewModel( loadFirstPage(selectedType, sort, selectedDayOfWeekFor(selectedType)) } + fun selectTypeAndSort(type: MainContentAllType, sort: ContentSort) { + selectedType = type + selectedSort = sort + selectedDayOfWeek = selectedDayOfWeekFor(type) + loadFirstPage(type, sort, selectedDayOfWeek) + } + fun changeDayOfWeek(dayOfWeek: SeriesPublishedDaysOfWeek) { if (!selectedType.usesDayOfWeekQuery()) return diff --git a/app/src/test/java/kr/co/vividnext/sodalive/v2/main/content/ContentAllTabViewModelTest.kt b/app/src/test/java/kr/co/vividnext/sodalive/v2/main/content/ContentAllTabViewModelTest.kt index bde73aeb..fd755bbb 100644 --- a/app/src/test/java/kr/co/vividnext/sodalive/v2/main/content/ContentAllTabViewModelTest.kt +++ b/app/src/test/java/kr/co/vividnext/sodalive/v2/main/content/ContentAllTabViewModelTest.kt @@ -227,6 +227,70 @@ class ContentAllTabViewModelTest { verifyGetContents(type = MainContentAllType.ORIGINAL, page = 0, dayOfWeek = null) } + @Test + fun `외부 선택 요청은 FREE POPULAR 첫 페이지를 dayOfWeek 없이 요청한다`() { + stubGetContents( + type = MainContentAllType.FREE, + sort = ContentSort.POPULAR, + response = Single.just( + ApiResponse( + true, + response( + type = MainContentAllType.FREE, + sort = ContentSort.POPULAR, + audios = listOf(audio(30L)) + ), + null + ) + ) + ) + + viewModel.selectTypeAndSort(MainContentAllType.FREE, ContentSort.POPULAR) + + val state = viewModel.allTabStateLiveData.requireValue() as MainContentAllTabUiState.Content + assertEquals(MainContentAllType.FREE, state.selectedType) + assertEquals(ContentSort.POPULAR, state.selectedSort) + assertEquals(null, state.selectedDayOfWeek) + assertEquals(0, state.page) + verifyGetContents( + type = MainContentAllType.FREE, + sort = ContentSort.POPULAR, + page = 0, + dayOfWeek = null + ) + } + + @Test + fun `외부 선택 요청은 ORIGINAL LATEST 첫 페이지를 dayOfWeek 없이 요청한다`() { + stubGetContents( + type = MainContentAllType.ORIGINAL, + response = Single.just( + ApiResponse( + true, + response( + type = MainContentAllType.ORIGINAL, + series = listOf(series(31L)) + ), + null + ) + ) + ) + + viewModel.selectTypeAndSort(MainContentAllType.ORIGINAL, ContentSort.LATEST) + + val state = viewModel.allTabStateLiveData.requireValue() as MainContentAllTabUiState.Content + assertEquals(MainContentAllType.ORIGINAL, state.selectedType) + assertEquals(ContentSort.LATEST, state.selectedSort) + assertEquals(null, state.selectedDayOfWeek) + assertEquals(0, state.page) + verifyGetContents( + type = MainContentAllType.ORIGINAL, + sort = ContentSort.LATEST, + page = 0, + dayOfWeek = null + ) + } + @Test fun `SERIES에서 요일 변경은 변경 요일과 page 0으로 요청한다`() { stubGetContents(response = Single.just(ApiResponse(true, response(), null)))