feat(content): New&Hot 전체보기 이동을 연결한다

This commit is contained in:
2026-06-27 09:04:41 +09:00
parent 4c7887055d
commit 77a201e139
3 changed files with 35 additions and 6 deletions

View File

@@ -332,7 +332,7 @@ class ContentMainFragmentSourceTest {
"binding.viewContentRecommendedAudioTitle.setTitle(" +
"R.string.content_recommendation_section_recommended_audio)"
)
assertFalse(source.contains("viewContentNewAndHotTitle.ivSectionTitleChevron.setOnClickListener"))
assertTrue(source.contains("viewContentNewAndHotTitle.ivSectionTitleChevron.setOnClickListener"))
}
@Test
@@ -376,7 +376,17 @@ class ContentMainFragmentSourceTest {
assertSourceContains(source, "openContentAllTab(MainContentAllType.FREE, ContentSort.POPULAR)")
assertSourceContains(source, "binding.viewContentPointAudioTitle.ivSectionTitleChevron.setOnClickListener")
assertSourceContains(source, "openContentAllTab(MainContentAllType.POINT, ContentSort.POPULAR)")
assertFalse(source.contains("viewContentNewAndHotTitle.ivSectionTitleChevron.setOnClickListener"))
assertTrue(source.contains("import kr.co.vividnext.sodalive.v2.main.content.overview.ContentOverviewActivity"))
assertTrue(source.contains("import kr.co.vividnext.sodalive.v2.main.content.overview.data.ContentOverviewType"))
assertTrue(source.contains("viewContentNewAndHotTitle.ivSectionTitleChevron.setOnClickListener"))
assertTrue(source.contains("openContentOverview(ContentOverviewType.NEW_AND_HOT_AUDIO)"))
val functionSource = source.substringFrom("private fun openContentOverview(type: ContentOverviewType)")
assertTrue(functionSource.contains("ensureMainV2NavigationAllowed"))
assertTrue(functionSource.contains("startActivity(ContentOverviewActivity.newIntent(requireContext(), type))"))
assertTrue(
functionSource.indexOf("ensureMainV2NavigationAllowed") <
functionSource.indexOf("startActivity(")
)
}
@Test
@@ -525,6 +535,15 @@ class ContentMainFragmentSourceTest {
assertTrue(message ?: "Expected source to contain: $expected", source.contains(expected))
}
private fun String.substringFrom(marker: String): String {
val startIndex = indexOf(marker)
assertTrue("Missing function: $marker", startIndex >= 0)
val nextFunctionIndex = indexOf("\n private fun ", startIndex + marker.length)
.takeIf { it >= 0 }
?: length
return substring(startIndex, nextFunctionIndex)
}
private fun projectFile(relativePath: String): File {
val candidates = listOf(File(relativePath), File("../$relativePath"))
return candidates.firstOrNull { it.exists() }

View File

@@ -1,7 +1,6 @@
package kr.co.vividnext.sodalive.v2.main.content.overview
import android.app.Application
import org.junit.Assert.assertFalse
import org.junit.Assert.assertTrue
import org.junit.Test
import org.junit.runner.RunWith
@@ -85,7 +84,7 @@ class ContentOverviewActivitySourceTest {
}
@Test
fun `manifest registers ContentOverviewActivity and Phase 7 routing is not added`() {
fun `manifest registers ContentOverviewActivity and Phase 7 routing is added`() {
val manifest = projectFile("app/src/main/AndroidManifest.xml").readText()
val homeSource = projectFile(
"app/src/main/java/kr/co/vividnext/sodalive/v2/main/home/HomeMainFragment.kt"
@@ -95,8 +94,8 @@ class ContentOverviewActivitySourceTest {
).readText()
assertTrue(manifest.contains(".v2.main.content.overview.ContentOverviewActivity"))
assertFalse(homeSource.contains("viewHomeFirstAudioTitle.ivSectionTitleChevron.setOnClickListener"))
assertFalse(contentSource.contains("viewContentNewAndHotTitle.ivSectionTitleChevron.setOnClickListener"))
assertTrue(homeSource.contains("viewHomeFirstAudioTitle.ivSectionTitleChevron.setOnClickListener"))
assertTrue(contentSource.contains("viewContentNewAndHotTitle.ivSectionTitleChevron.setOnClickListener"))
}
private fun projectFile(relativePath: String): File {