diff --git a/app/src/main/java/kr/co/vividnext/sodalive/v2/main/content/ContentMainFragment.kt b/app/src/main/java/kr/co/vividnext/sodalive/v2/main/content/ContentMainFragment.kt index af6eadbc..6f3303a5 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/v2/main/content/ContentMainFragment.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/v2/main/content/ContentMainFragment.kt @@ -293,7 +293,7 @@ class ContentMainFragment : BaseFragment( } private fun openRankingAudioContentDetail(item: ContentRankingItem) { - val audioContentId = item.contentId.toLongOrNull() ?: return + val audioContentId = item.contentId.toLongOrNull()?.takeIf { it > 0L } ?: return openAudioContentDetail(audioContentId) } diff --git a/app/src/test/java/kr/co/vividnext/sodalive/v2/main/content/ContentMainFragmentSourceTest.kt b/app/src/test/java/kr/co/vividnext/sodalive/v2/main/content/ContentMainFragmentSourceTest.kt index 773f40c6..b9f32dbb 100644 --- a/app/src/test/java/kr/co/vividnext/sodalive/v2/main/content/ContentMainFragmentSourceTest.kt +++ b/app/src/test/java/kr/co/vividnext/sodalive/v2/main/content/ContentMainFragmentSourceTest.kt @@ -85,6 +85,17 @@ class ContentMainFragmentSourceTest { assertTrue(source.contains("toContentBannerIntent(requireContext())")) } + @Test + fun `content 랭킹 routing은 유효하지 않은 contentId를 무시한다`() { + val source = projectFile( + "app/src/main/java/kr/co/vividnext/sodalive/v2/main/content/ContentMainFragment.kt" + ).readText() + + assertTrue(source.contains("private fun openRankingAudioContentDetail(item: ContentRankingItem)")) + assertTrue(source.contains("item.contentId.toLongOrNull()?.takeIf { it > 0L } ?: return")) + assertTrue(source.contains("openAudioContentDetail(audioContentId)")) + } + @Test fun `content 추천 layout은 Phase 4~6 item layout과 제외 섹션 정책을 지킨다`() { val fragmentLayout = projectFile("app/src/main/res/layout/fragment_v2_main_content.xml").readText()