feat(creator): 라이브 탭 본인 CTA를 연결한다

This commit is contained in:
2026-06-18 11:12:55 +09:00
parent 0d11839a96
commit a49951c51f
4 changed files with 110 additions and 0 deletions

View File

@@ -994,6 +994,25 @@ class CreatorChannelActivitySourceTest {
assertFalse(source.contains("startActivity(Intent(this, LiveRoomCreateActivity::class.java))"))
}
@Test
fun `라이브 탭 owner CTA는 header 본인 여부와 기존 라이브 생성 플로우를 재사용한다`() {
val source = projectFile(
"app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/CreatorChannelActivity.kt"
).readText()
val fragment = projectFile(
"app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/live/CreatorChannelLiveFragment.kt"
).readText()
assertTrue(source.contains("findLiveFragment()?.onCreatorChannelOwnerChanged(header.isOwner)"))
assertTrue(source.contains("override fun isCreatorChannelOwner(): Boolean"))
assertTrue(source.contains("return currentHeader?.isOwner == true"))
assertTrue(source.contains("override fun onCreatorChannelLiveStartClicked()"))
assertTrue(source.contains("onOwnerFabLiveClicked()"))
assertTrue(source.contains("liveRoomCreateLauncher.launch(Intent(this, LiveRoomCreateActivity::class.java))"))
assertTrue(fragment.contains("fun onCreatorChannelOwnerChanged(isOwner: Boolean)"))
assertTrue(fragment.contains("host.onCreatorChannelLiveStartClicked()"))
}
@Test
fun `크리에이터 채널 라이브 로직은 coordinator로 분리한다`() {
val activity = projectFile(

View File

@@ -196,6 +196,32 @@ class CreatorChannelLiveFragmentLayoutTest {
assertTrue(adapter.contains("layoutCreatorChannelLiveReplayActionText.isVisible = true"))
}
@Test
fun `라이브 owner CTA source는 본인 여부 노출 inset padding click 연결을 포함한다`() {
val fragment = projectFile(
"app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/live/CreatorChannelLiveFragment.kt"
).readText()
val layout = projectFile("app/src/main/res/layout/fragment_creator_channel_live.xml").readText()
assertTrue(layout.contains("android:id=\"@+id/layout_creator_channel_live_owner_cta\""))
assertTrue(layout.contains("@drawable/ic_new_create_live"))
assertTrue(layout.contains("@string/creator_channel_live_start_button"))
assertTrue(fragment.contains("setupOwnerCtaInsets()"))
assertTrue(fragment.contains("WindowInsetsCompat.Type.navigationBars()"))
assertTrue(fragment.contains("layoutCreatorChannelLiveOwnerCta.updateLayoutParams<ConstraintLayout.LayoutParams>"))
assertTrue(fragment.contains("rvCreatorChannelLiveReplays.updatePadding"))
assertTrue(fragment.contains("onCreatorChannelOwnerChanged(isOwner: Boolean)"))
assertTrue(fragment.contains("bindOwnerCta(host.isCreatorChannelOwner())"))
assertTrue(fragment.contains("layoutCreatorChannelLiveOwnerCta.isVisible = isOwner"))
assertTrue(fragment.contains("layoutCreatorChannelLiveOwnerCta.setOnClickListener"))
assertTrue(fragment.contains("host.onCreatorChannelLiveStartClicked()"))
assertTrue(fragment.contains("layoutCreatorChannelLiveOwnerCta.isEnabled = false"))
assertTrue(fragment.contains("onResume()"))
assertTrue(fragment.contains("interface Host"))
assertTrue(fragment.contains("fun isCreatorChannelOwner(): Boolean"))
assertTrue(fragment.contains("fun onCreatorChannelLiveStartClicked()"))
}
@Test
fun `라이브 sort popup source는 outside dismiss와 화면 밖 보정 및 같은 정렬 dismiss를 포함한다`() {
val popup = projectFile(