feat(creator-channel): 커뮤니티 목록 클릭을 연결한다

This commit is contained in:
2026-07-09 00:54:06 +09:00
parent e691f78e2e
commit 81537b1e96
4 changed files with 61 additions and 6 deletions

View File

@@ -47,6 +47,35 @@ class CreatorChannelActivitySourceTest {
assertTrue(source.contains("marginStart = if (isChatVisible && isDmVisible)"))
}
@Test
fun `커뮤니티 게시물 클릭 source는 상세 Activity newIntent로 진입하고 invalid postId를 무시한다`() {
val source = projectFile(
"app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/CreatorChannelActivity.kt"
).readText()
assertTrue(
source.contains(
"import kr.co.vividnext.sodalive.v2.creator.channel.community.detail.CreatorChannelCommunityDetailActivity"
)
)
assertTrue(source.contains("override fun onCreatorChannelCommunityPostClicked(postId: Long)"))
assertTrue(source.contains("if (postId <= 0L) return"))
assertTrue(source.contains("if (SharedPreferenceManager.token.isBlank())"))
assertTrue(source.contains("showLoginActivity()"))
assertTrue(source.contains("CreatorChannelCommunityDetailActivity.newIntent(this, postId)"))
assertTrue(source.contains("private val communityDetailLauncher = registerForActivityResult"))
assertTrue(
source.contains(
"communityDetailLauncher.launch(CreatorChannelCommunityDetailActivity.newIntent(this, postId))"
)
)
assertTrue(
source.indexOf("if (SharedPreferenceManager.token.isBlank())") <
source.indexOf("communityDetailLauncher.launch(CreatorChannelCommunityDetailActivity.newIntent(this, postId))")
)
assertTrue(source.contains("refreshCreatorChannelCommunity()"))
}
@Test
fun `follow notify source는 Phase 11 직접 팔로우 알림 액션을 연결한다`() {
val source = projectFile(

View File

@@ -162,7 +162,7 @@ class CreatorChannelCommunityFragmentLayoutTest {
}
@Test
fun `커뮤니티 adapters source는 binding 상태 표시와 root click navigation 배제를 보장한다`() {
fun `커뮤니티 adapters source는 binding 상태 표시와 root click callback 계약을 보장한다`() {
val listAdapter = projectFile(
"app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/community/ui/CreatorChannelCommunityListAdapter.kt"
).readText()
@@ -182,7 +182,13 @@ class CreatorChannelCommunityFragmentLayoutTest {
assertTrue(listAdapter.contains("isPlayingContent"))
assertTrue(listAdapter.contains("R.drawable.ic_player_pause"))
assertTrue(listAdapter.contains("R.drawable.ic_new_player_play"))
assertTrue(listAdapter.contains("private val onPostClick: (CreatorChannelCommunityPostUiModel) -> Unit = {}"))
assertTrue(listAdapter.contains("root.setOnClickListener { onPostClick(item) }"))
assertTrue(listAdapter.contains("ivCreatorChannelCommunityListPlay.setOnClickListener { onPlayClick(item) }"))
assertTrue(listAdapter.contains("onOwnerMoreClick(item)"))
assertTrue(listAdapter.contains("ivCreatorChannelCommunityListOwnerMore.setOnClickListener { onOwnerMoreClick(item) }"))
assertTrue(gridAdapter.contains("private val onPostClick: (CreatorChannelCommunityPostUiModel) -> Unit = {}"))
assertTrue(gridAdapter.contains("root.setOnClickListener { onPostClick(item) }"))
assertTrue(listAdapter.contains("tvCreatorChannelCommunityListLockedPrice.isVisible = item.isLocked"))
assertTrue(listAdapter.contains("layoutCreatorChannelCommunityListTopPrice.isVisible = item.showOwnerTopPrice"))
assertTrue(!listAdapter.contains("item.isLocked || item.showOwnerTopPrice"))
@@ -192,8 +198,17 @@ class CreatorChannelCommunityFragmentLayoutTest {
assertTrue(!gridAdapter.contains("14f.dpToPx()"))
assertTrue(!gridAdapter.contains("root.clipToOutline = true"))
assertTrue(!listAdapter.contains(".asBitmap()"))
assertTrue(!listAdapter.contains("root.setOnClickListener"))
assertTrue(!gridAdapter.contains("root.setOnClickListener"))
}
@Test
fun `커뮤니티 fragment source는 post click을 list grid adapter와 Host로 위임한다`() {
val fragment = projectFile(
"app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/community/CreatorChannelCommunityFragment.kt"
).readText()
assertTrue(fragment.contains("onPostClick = { item -> host.onCreatorChannelCommunityPostClicked(item.postId) }"))
assertTrue(fragment.contains("private val gridAdapter = CreatorChannelCommunityGridAdapter("))
assertTrue(fragment.contains("fun onCreatorChannelCommunityPostClicked(postId: Long)"))
}
@Test