feat(creator): 오디오 탭 activity 연동을 추가한다

This commit is contained in:
2026-06-19 21:04:08 +09:00
parent bcbc48540e
commit 757f242285
3 changed files with 148 additions and 68 deletions

View File

@@ -391,8 +391,12 @@ class CreatorChannelActivitySourceTest {
assertFalse(source.contains("private var selectedTab: CreatorChannelTab = CreatorChannelTab.Home"))
assertFalse(source.contains("setOnClickListener { onTabClicked(tab) }"))
assertFalse(source.contains("private fun onTabClicked(tab: CreatorChannelTab)"))
val pagerAdapter = projectFile(
"app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/CreatorChannelPagerAdapter.kt"
).readText()
assertFalse(source.contains("if (tab != CreatorChannelTab.Home) return"))
assertFalse(source.contains("CreatorChannelTab.Audio ->"))
assertTrue(pagerAdapter.contains("CreatorChannelTab.Audio -> CreatorChannelAudioFragment.newInstance(creatorId)"))
assertFalse(source.contains("CreatorChannelTab.Series ->"))
assertFalse(source.contains("CreatorChannelTab.Community ->"))
assertFalse(source.contains("CreatorChannelTab.FanTalk ->"))
@@ -925,16 +929,19 @@ class CreatorChannelActivitySourceTest {
assertTrue(source.contains("private fun onCreatorChannelNestedScrollChanged(scrollY: Int, oldScrollY: Int)"))
assertTrue(source.contains("binding.nestedScrollView.getChildAt(0)?.height"))
assertTrue(source.contains("binding.nestedScrollView.height"))
assertTrue(source.contains("CREATOR_CHANNEL_LIVE_LOAD_MORE_THRESHOLD_DP.dpToPx().toInt()"))
assertTrue(source.contains("CREATOR_CHANNEL_LOAD_MORE_THRESHOLD_DP.dpToPx().toInt()"))
assertTrue(source.contains("findLiveFragment()?.onCreatorChannelLiveScrolledToBottom()"))
assertTrue(source.contains("findAudioFragment()?.onCreatorChannelAudioScrolledToBottom()"))
assertTrue(source.contains("private fun findLiveFragment(): CreatorChannelLiveFragment?"))
assertTrue(source.contains("supportFragmentManager.findFragmentByTag"))
assertTrue(source.contains("override fun onCreatorChannelLiveContentChanged()"))
assertTrue(source.contains("postCheckCreatorChannelLiveNeedsMore()"))
assertTrue(source.contains("postCheckCreatorChannelCurrentTabNeedsMore()"))
assertTrue(source.contains("updateViewPagerHeight()"))
assertTrue(source.contains("updateCreatorChannelLiveViewportHeight()"))
assertTrue(source.contains("if (position == CreatorChannelTab.Live.ordinal)"))
assertTrue(source.contains("updateCreatorChannelTabViewportHeight()"))
assertTrue(source.contains("CreatorChannelTab.Live.ordinal -> binding.viewPager.post"))
assertTrue(source.contains("findLiveFragment()?.onCreatorChannelLiveTabSelected()"))
assertTrue(source.contains("CreatorChannelTab.Audio.ordinal -> binding.viewPager.post"))
assertTrue(source.contains("findAudioFragment()?.onCreatorChannelAudioTabSelected()"))
assertTrue(source.contains("binding.viewPager.offscreenPageLimit = CreatorChannelTab.entries.size - 1"))
assertFalse(source.contains("currentPage.minimumHeight = calculateCreatorChannelTabViewportHeight()"))
assertFalse(source.contains("private fun calculateCreatorChannelTabViewportHeight(): Int"))
@@ -950,10 +957,11 @@ class CreatorChannelActivitySourceTest {
"app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/CreatorChannelActivity.kt"
).readText()
assertTrue(source.contains("private fun updateCreatorChannelLiveViewportHeight()"))
assertTrue(source.contains("findLiveFragment()?.onCreatorChannelLiveViewportHeightChanged"))
assertTrue(source.contains("calculateCreatorChannelLiveEmptyMinHeight()"))
assertTrue(source.contains("private fun calculateCreatorChannelLiveEmptyMinHeight(): Int"))
assertTrue(source.contains("private fun updateCreatorChannelTabViewportHeight()"))
assertTrue(source.contains("findLiveFragment()?.onCreatorChannelLiveViewportHeightChanged(minHeight)"))
assertTrue(source.contains("findAudioFragment()?.onCreatorChannelAudioViewportHeightChanged(minHeight)"))
assertTrue(source.contains("calculateCreatorChannelTabEmptyMinHeight()"))
assertTrue(source.contains("private fun calculateCreatorChannelTabEmptyMinHeight(): Int"))
assertTrue(source.contains("val stickyScrollY = calculateCreatorChannelStickyScrollY()"))
assertTrue(source.contains("binding.nestedScrollView.height - binding.tabLayout.height"))
assertTrue(source.contains("val scrollRangeRequiredHeight = binding.nestedScrollView.height +"))
@@ -989,18 +997,18 @@ class CreatorChannelActivitySourceTest {
"app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/CreatorChannelActivity.kt"
).readText()
assertTrue(source.contains("private fun postCheckCreatorChannelLiveNeedsMore()"))
assertTrue(source.contains("private fun postCheckCreatorChannelCurrentTabNeedsMore()"))
assertTrue(source.contains("binding.nestedScrollView.post"))
assertTrue(source.contains("checkCreatorChannelLiveNeedsMore()"))
assertTrue(source.contains("if (binding.viewPager.currentItem != CreatorChannelTab.Live.ordinal) return"))
assertTrue(source.contains("checkCreatorChannelCurrentTabNeedsMore()"))
assertTrue(source.contains("if (!isCreatorChannelLoadMoreTab(binding.viewPager.currentItem)) return"))
assertTrue(source.contains("findLiveFragment()?.onCreatorChannelLiveScrolledToBottom()"))
}
@Test
fun `라이브 pagination remaining scroll helper는 content viewport scroll 차이를 계산한다`() {
assertEquals(100, calculateCreatorChannelLiveRemainingScroll(contentHeight = 1000, viewportHeight = 700, scrollY = 200))
assertEquals(0, calculateCreatorChannelLiveRemainingScroll(contentHeight = 1000, viewportHeight = 700, scrollY = 300))
assertEquals(-20, calculateCreatorChannelLiveRemainingScroll(contentHeight = 1000, viewportHeight = 700, scrollY = 320))
assertEquals(100, calculateCreatorChannelRemainingScroll(contentHeight = 1000, viewportHeight = 700, scrollY = 200))
assertEquals(0, calculateCreatorChannelRemainingScroll(contentHeight = 1000, viewportHeight = 700, scrollY = 300))
assertEquals(-20, calculateCreatorChannelRemainingScroll(contentHeight = 1000, viewportHeight = 700, scrollY = 320))
}
@Test
@@ -1042,17 +1050,23 @@ class CreatorChannelActivitySourceTest {
).readText()
val activityLayout = projectFile("app/src/main/res/layout/activity_creator_channel.xml").readText()
assertTrue(activityLayout.contains("android:id=\"@+id/layout_creator_channel_live_owner_cta\""))
assertTrue(source.contains("updateLiveOwnerCtaVisibility()"))
assertTrue(activityLayout.contains("android:id=\"@+id/layout_creator_channel_owner_cta\""))
assertTrue(source.contains("updateOwnerCtaVisibility()"))
assertTrue(source.contains("if (binding.viewPager.currentItem == CreatorChannelTab.Audio.ordinal)"))
assertTrue(source.contains("findAudioFragment()?.onCreatorChannelAudioTabSelected()"))
assertTrue(
source.contains(
"currentHeader?.isOwner == true && binding.viewPager.currentItem == CreatorChannelTab.Live.ordinal"
"CreatorChannelTab.Live.ordinal -> CreatorChannelTab.Live"
)
)
assertTrue(source.contains("binding.layoutCreatorChannelLiveOwnerCta.isVisible = shouldShowLiveOwnerCta"))
assertTrue(source.contains("findLiveFragment()?.onCreatorChannelLiveOwnerCtaVisibilityChanged(shouldShowLiveOwnerCta)"))
assertTrue(source.contains("return currentHeader?.isOwner == true"))
assertTrue(source.contains("binding.btnCreatorChannelLiveOwnerCta.setOnClickListener { onLiveOwnerCtaClicked() }"))
assertTrue(source.contains("binding.layoutCreatorChannelOwnerCta.isVisible = shouldShowOwnerCta"))
assertTrue(
source.contains(
"findLiveFragment()?.onCreatorChannelLiveOwnerCtaVisibilityChanged(ownerCtaTab == CreatorChannelTab.Live)"
)
)
assertTrue(source.contains("if (currentHeader?.isOwner != true) return null"))
assertTrue(source.contains("binding.btnCreatorChannelOwnerCta.setOnClickListener { onOwnerCtaClicked() }"))
assertTrue(source.contains("onOwnerFabLiveClicked()"))
assertTrue(source.contains("liveRoomCreateLauncher.launch(Intent(this, LiveRoomCreateActivity::class.java))"))
}
@@ -1065,7 +1079,7 @@ class CreatorChannelActivitySourceTest {
assertFalse(source.contains("binding.ownerFabButton.updateLayoutParams<ConstraintLayout.LayoutParams>"))
assertFalse(source.contains("binding.ownerFabExpandedContainer.updateLayoutParams<ConstraintLayout.LayoutParams>"))
assertFalse(source.contains("binding.layoutCreatorChannelLiveOwnerCta.updateLayoutParams<ConstraintLayout.LayoutParams>"))
assertFalse(source.contains("binding.layoutCreatorChannelOwnerCta.updateLayoutParams<ConstraintLayout.LayoutParams>"))
assertFalse(source.contains("WindowInsetsCompat.Type.navigationBars()).bottom"))
assertTrue(
source.contains(