feat(creator-channel): 홈 섹션 이동을 연결한다

This commit is contained in:
2026-07-09 08:19:00 +09:00
parent b745c3d675
commit f3a4578a66
4 changed files with 124 additions and 4 deletions

View File

@@ -980,6 +980,68 @@ class CreatorChannelActivitySourceTest {
assertTrue(activity.contains("dialog.show(screenWidth - 26.7f.dpToPx().toInt())"))
}
@Test
fun `홈 섹션 chevron과 커뮤니티 전체보기는 대응 탭으로 이동한다`() {
val adapter = projectFile(
"app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/ui/CreatorChannelHomeSectionAdapter.kt"
).readText()
val fragment = projectFile(
"app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/CreatorChannelHomeFragment.kt"
).readText()
val activity = projectFile(
"app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/CreatorChannelActivity.kt"
).readText()
assertTrue(adapter.contains("private val sectionTitleChevron: ImageView?"))
assertTrue(adapter.contains("private val communityMoreButton: View?"))
assertTrue(adapter.contains("sectionTitleChevron?.isVisible = item.chevronTab != null"))
assertTrue(adapter.contains("sectionTitleChevron?.setOnClickListener"))
assertTrue(adapter.contains("item.chevronTab?.let(onSectionChevronClick)"))
assertTrue(
adapter.contains(
"communityMoreButton?.setOnClickListener { onSectionChevronClick(CreatorChannelTab.Community) }"
)
)
assertTrue(adapter.contains("is CreatorChannelHomeSection.Donations -> CreatorChannelTab.Donation"))
assertTrue(adapter.contains("is CreatorChannelHomeSection.AudioContents -> CreatorChannelTab.Audio"))
assertTrue(adapter.contains("is CreatorChannelHomeSection.Series -> CreatorChannelTab.Series"))
assertTrue(adapter.contains("is CreatorChannelHomeSection.FanTalk -> CreatorChannelTab.FanTalk"))
assertTrue(fragment.contains("onSectionChevronClick = ::onSectionChevronClicked"))
assertTrue(fragment.contains("host.onCreatorChannelHomeTabRequested(tab)"))
assertTrue(activity.contains("override fun onCreatorChannelHomeTabRequested(tab: CreatorChannelTab)"))
assertTrue(activity.contains("private fun selectCreatorChannelTab(tab: CreatorChannelTab)"))
assertTrue(activity.contains("binding.viewPager.currentItem = tab.ordinal"))
assertTrue(activity.contains("private fun scrollCreatorChannelToTop()"))
assertTrue(activity.contains("binding.nestedScrollView.scrollTo(0, 0)"))
assertTrue(
activity.contains(
"override fun onCreatorChannelHomeTabRequested(tab: CreatorChannelTab) {\n" +
" selectCreatorChannelTab(tab)\n" +
" scrollCreatorChannelToTop()"
)
)
}
@Test
fun `홈 커뮤니티 아이템 클릭은 커뮤니티 상세 이동 host 계약을 사용한다`() {
val adapter = projectFile(
"app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/ui/CreatorChannelHomeSectionAdapter.kt"
).readText()
val fragment = projectFile(
"app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/CreatorChannelHomeFragment.kt"
).readText()
val activity = projectFile(
"app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/CreatorChannelActivity.kt"
).readText()
assertTrue(adapter.contains("private val onCommunityClick: (Long) -> Unit = {}"))
assertTrue(adapter.contains("row.setOnClickListener { onCommunityClick(community.postId) }"))
assertTrue(fragment.contains("onCommunityClick = ::onCommunityClicked"))
assertTrue(fragment.contains("host.onCreatorChannelCommunityPostClicked(postId)"))
assertTrue(activity.contains("override fun onCreatorChannelCommunityPostClicked(postId: Long)"))
assertTrue(activity.contains("CreatorChannelCommunityDetailActivity.newIntent(this, postId)"))
}
@Test
fun `후원 can 수량은 요청된 배경색 resource 경계로 매핑한다`() {
assertEquals(R.color.gray_200, calculateCreatorChannelDonationHeaderColorRes(1))