fix(home): 메인 홈 추천 탭 지금 라이브 중 입장을 연결한다
This commit is contained in:
@@ -77,6 +77,46 @@ class HomeMainFragmentLoginGuardSourceTest {
|
||||
assertTrue(showHomeTabSource.contains("currentHomeTabIndex = index"))
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `HomeMainFragment 추천 라이브 아이템은 로그인과 성인 가드 후 기존 입장 흐름을 실행한다`() {
|
||||
val source = projectFile(
|
||||
"app/src/main/java/kr/co/vividnext/sodalive/v2/main/home/HomeMainFragment.kt"
|
||||
).readText()
|
||||
|
||||
val clickSource = source.substringFrom("private fun onLiveClick(item: HomeRecommendationLiveUiModel)")
|
||||
assertTrue(clickSource.contains("ensureMainV2NavigationAllowed"))
|
||||
assertTrue(clickSource.contains("liveViewModel.getRoomDetail(item.roomId) { roomDetail ->"))
|
||||
assertBefore(clickSource, "if (!isAdded || view == null) return@getRoomDetail", "requiresAdultContentAccess = roomDetail.isAdult")
|
||||
assertBefore(clickSource, "liveViewModel.getRoomDetail(item.roomId) { roomDetail ->", "requiresAdultContentAccess = roomDetail.isAdult")
|
||||
assertBefore(clickSource, "requiresAdultContentAccess = roomDetail.isAdult", "liveCoordinator.enterLiveRoom(item.roomId, roomDetail)")
|
||||
assertFalse(clickSource.contains("= Unit"))
|
||||
|
||||
assertTrue(source.contains("import kr.co.vividnext.sodalive.v2.creator.channel.CreatorChannelLiveCoordinator"))
|
||||
assertTrue(source.contains("private val liveCoordinator: CreatorChannelLiveCoordinator by lazy"))
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `HomeMainFragment loading dialog는 통합 loading state로 제어한다`() {
|
||||
val source = projectFile(
|
||||
"app/src/main/java/kr/co/vividnext/sodalive/v2/main/home/HomeMainFragment.kt"
|
||||
).readText()
|
||||
|
||||
assertTrue(source.contains("private var isRecommendationLoading = false"))
|
||||
assertTrue(source.contains("private var isCreatorRankingLoading = false"))
|
||||
assertTrue(source.contains("private var isFollowingLoading = false"))
|
||||
assertTrue(source.contains("private var isLiveEntryLoading = false"))
|
||||
|
||||
val updateSource = source.substringFrom("private fun updateLoadingDialog()")
|
||||
assertTrue(updateSource.contains("isRecommendationLoading || isCreatorRankingLoading || isFollowingLoading || isLiveEntryLoading"))
|
||||
assertTrue(updateSource.contains("loadingDialog.show(screenWidth)"))
|
||||
assertTrue(updateSource.contains("loadingDialog.dismiss()"))
|
||||
|
||||
assertLoadingObserverUsesUpdate(source, "homeRecommendationViewModel.isLoading.observe(viewLifecycleOwner)", "isRecommendationLoading = isLoading")
|
||||
assertLoadingObserverUsesUpdate(source, "homeCreatorRankingViewModel.isLoading.observe(viewLifecycleOwner)", "isCreatorRankingLoading = isLoading")
|
||||
assertLoadingObserverUsesUpdate(source, "homeFollowingViewModel.isLoading.observe(viewLifecycleOwner)", "isFollowingLoading = isLoading")
|
||||
assertLoadingObserverUsesUpdate(source, "liveViewModel.isLoading.observe(viewLifecycleOwner)", "isLiveEntryLoading = isLoading")
|
||||
}
|
||||
|
||||
private fun assertGuardedStartActivity(source: String, functionSignature: String) {
|
||||
val functionSource = source.substringFrom(functionSignature)
|
||||
assertTrue(
|
||||
@@ -101,6 +141,14 @@ class HomeMainFragmentLoginGuardSourceTest {
|
||||
assertTrue("Missing source after $expectedBefore: $expectedAfter", afterIndex > beforeIndex)
|
||||
}
|
||||
|
||||
private fun assertLoadingObserverUsesUpdate(source: String, observerMarker: String, loadingAssignment: String) {
|
||||
val observerSource = source.substringFrom(observerMarker)
|
||||
assertTrue(observerSource.contains(loadingAssignment))
|
||||
assertTrue(observerSource.contains("updateLoadingDialog()"))
|
||||
assertFalse(observerSource.contains("loadingDialog.show(screenWidth)"))
|
||||
assertFalse(observerSource.contains("loadingDialog.dismiss()"))
|
||||
}
|
||||
|
||||
private fun String.substringFrom(marker: String): String {
|
||||
val startIndex = indexOf(marker)
|
||||
assertTrue("Missing function: $marker", startIndex >= 0)
|
||||
|
||||
Reference in New Issue
Block a user