feat(creator): 커뮤니티 탭 activity 동작을 연결한다

This commit is contained in:
2026-06-22 01:44:29 +09:00
parent e29ae4fedb
commit a36c3b74e8
4 changed files with 211 additions and 11 deletions

View File

@@ -416,7 +416,6 @@ class CreatorChannelActivitySourceTest {
assertFalse(source.contains("if (tab != CreatorChannelTab.Home) return"))
assertTrue(pagerAdapter.contains("CreatorChannelTab.Audio -> CreatorChannelAudioFragment.newInstance(creatorId)"))
assertTrue(pagerAdapter.contains("CreatorChannelTab.Series -> CreatorChannelSeriesFragment.newInstance(creatorId)"))
assertFalse(source.contains("CreatorChannelTab.Community ->"))
assertFalse(source.contains("CreatorChannelTab.FanTalk ->"))
assertFalse(source.contains("CreatorChannelTab.Donation ->"))
}
@@ -440,6 +439,60 @@ class CreatorChannelActivitySourceTest {
assertTrue(source.contains("putExtra(Constants.EXTRA_SERIES_ID, seriesId)"))
}
@Test
fun `Community tab source는 Fragment Host pagination owner CTA를 Activity에 연결한다`() {
val source = projectFile(
"app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/CreatorChannelActivity.kt"
).readText()
val adapter = projectFile(
"app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/CreatorChannelPagerAdapter.kt"
).readText()
val fragment = projectFile(
"app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/community/CreatorChannelCommunityFragment.kt"
).readText()
assertTrue(adapter.contains("CreatorChannelCommunityFragment.newInstance(creatorId)"))
assertTrue(source.contains("CreatorChannelCommunityFragment.Host"))
assertTrue(
source.contains(
"import kr.co.vividnext.sodalive.v2.creator.channel.community.CreatorChannelCommunityFragment"
)
)
assertTrue(source.contains("private fun findCommunityFragment(): CreatorChannelCommunityFragment?"))
assertTrue(source.contains("findCommunityFragment()?.onCreatorChannelCommunityTabSelected()"))
assertTrue(source.contains("if (binding.viewPager.currentItem == CreatorChannelTab.Community.ordinal)"))
assertTrue(source.contains("findCommunityFragment()?.onCreatorChannelCommunityScrolledToBottom()"))
assertTrue(source.contains("position == CreatorChannelTab.Community.ordinal"))
assertTrue(source.contains("override fun onCreatorChannelCommunityContentChanged()"))
assertTrue(source.contains("findCommunityFragment()?.onCreatorChannelCommunityOwnerCtaVisibilityChanged("))
assertTrue(source.contains("ownerCtaTab == CreatorChannelTab.Community"))
assertTrue(source.contains("CreatorChannelTab.Community.ordinal -> CreatorChannelTab.Community"))
assertTrue(source.contains("iconResId = R.drawable.ic_new_upload_community_post"))
assertTrue(source.contains("textResId = R.string.creator_channel_owner_fab_community"))
assertTrue(source.contains("CreatorChannelTab.Community.ordinal -> onOwnerFabCommunityClicked()"))
assertTrue(source.contains("private val communityPostModifyLauncher"))
assertTrue(source.contains("CreatorCommunityModifyActivity::class.java"))
assertTrue(source.contains("putExtra(Constants.EXTRA_COMMUNITY_POST_ID, item.postId)"))
assertTrue(source.contains("creatorCommunityRepository.updateCommunityPostFixed("))
assertTrue(source.contains("isFixed = !item.isPinned"))
assertTrue(source.contains("creatorCommunityRepository.modifyCommunityPost("))
assertTrue(source.contains("isActive = false"))
assertTrue(source.contains("findCommunityFragment()?.onCreatorChannelCommunityRefreshRequested()"))
assertFalse(source.contains("onCreatorChannelCommunityOwnerMoreClicked(postId: Long)"))
assertFalse(fragment.contains("onCreatorChannelCommunityOwnerMoreClicked(item.postId)"))
assertFalse(source.contains("onClickPin = {},"))
assertFalse(source.contains("onClickModify = {},"))
assertFalse(source.contains("onClickDelete = {},"))
assertTrue(fragment.contains("fun onCreatorChannelCommunityRefreshRequested()"))
assertTrue(
fragment.contains(
"CreatorCommunityMediaPlayerManager(requireContext()) { listAdapter.notifyDataSetChanged() }"
)
)
assertTrue(fragment.contains("mediaPlayerManager?.toggleContent(CreatorCommunityContentItem(item.postId, audioUrl))"))
assertTrue(fragment.contains("mediaPlayerManager?.stopContent()"))
}
@Test
fun `section adapter source는 활동 지표를 행 단위 resource label로 표시한다`() {
val adapter = projectFile(