feat(content): 추천 섹션 chevron 표시를 적용한다

This commit is contained in:
2026-06-27 06:02:38 +09:00
parent 1bd0f369ee
commit 73dc939cd3
2 changed files with 77 additions and 7 deletions

View File

@@ -507,18 +507,36 @@ class ContentMainFragment : BaseFragment<FragmentV2MainContentBinding>(
} }
private fun setUpSectionTitles() { private fun setUpSectionTitles() {
binding.viewContentOriginalSeriesTitle.setTitle(R.string.content_recommendation_section_original_series) binding.viewContentOriginalSeriesTitle.setTitle(
binding.viewContentLatestAudioTitle.setTitle(R.string.content_recommendation_section_latest_audio) R.string.content_recommendation_section_original_series,
binding.viewContentNewAndHotTitle.setTitle(R.string.content_recommendation_section_new_and_hot) showMore = true
binding.viewContentFreeAudioTitle.setTitle(R.string.content_recommendation_section_free_audio) )
binding.viewContentPointAudioTitle.setTitle(R.string.content_recommendation_section_point_audio) binding.viewContentLatestAudioTitle.setTitle(
R.string.content_recommendation_section_latest_audio,
showMore = true
)
binding.viewContentNewAndHotTitle.setTitle(
R.string.content_recommendation_section_new_and_hot,
showMore = true
)
binding.viewContentFreeAudioTitle.setTitle(
R.string.content_recommendation_section_free_audio,
showMore = true
)
binding.viewContentPointAudioTitle.setTitle(
R.string.content_recommendation_section_point_audio,
showMore = true
)
binding.viewContentMostCommentedAudioTitle.setTitle(R.string.content_recommendation_section_most_commented_audio) binding.viewContentMostCommentedAudioTitle.setTitle(R.string.content_recommendation_section_most_commented_audio)
binding.viewContentRecommendedAudioTitle.setTitle(R.string.content_recommendation_section_recommended_audio) binding.viewContentRecommendedAudioTitle.setTitle(R.string.content_recommendation_section_recommended_audio)
} }
private fun ViewSectionTitleBinding.setTitle(titleResId: Int) { private fun ViewSectionTitleBinding.setTitle(
titleResId: Int,
showMore: Boolean = false
) {
tvSectionTitle.setText(titleResId) tvSectionTitle.setText(titleResId)
ivSectionTitleChevron.visibility = View.GONE ivSectionTitleChevron.visibility = if (showMore) View.VISIBLE else View.GONE
} }
private fun onBannerClick(item: ContentBannerUiModel) { private fun onBannerClick(item: ContentBannerUiModel) {

View File

@@ -283,6 +283,58 @@ class ContentMainFragmentSourceTest {
assertTrue(audioCardLayout.contains("android:visibility=\"gone\"")) assertTrue(audioCardLayout.contains("android:visibility=\"gone\""))
} }
@Test
fun `콘텐츠 추천 섹션 타이틀은 Phase 2 대상에만 chevron을 표시한다`() {
val source = projectFile(
"app/src/main/java/kr/co/vividnext/sodalive/v2/main/content/ContentMainFragment.kt"
).readText()
assertSourceContains(source, "private fun ViewSectionTitleBinding.setTitle(")
assertSourceContains(source, "showMore: Boolean = false")
assertSourceContains(source, "ivSectionTitleChevron.visibility = if (showMore) View.VISIBLE else View.GONE")
assertSourceContains(
source,
"binding.viewContentOriginalSeriesTitle.setTitle(\n" +
" R.string.content_recommendation_section_original_series,\n" +
" showMore = true"
)
assertSourceContains(
source,
"binding.viewContentLatestAudioTitle.setTitle(\n" +
" R.string.content_recommendation_section_latest_audio,\n" +
" showMore = true"
)
assertSourceContains(
source,
"binding.viewContentNewAndHotTitle.setTitle(\n" +
" R.string.content_recommendation_section_new_and_hot,\n" +
" showMore = true"
)
assertSourceContains(
source,
"binding.viewContentFreeAudioTitle.setTitle(\n" +
" R.string.content_recommendation_section_free_audio,\n" +
" showMore = true"
)
assertSourceContains(
source,
"binding.viewContentPointAudioTitle.setTitle(\n" +
" R.string.content_recommendation_section_point_audio,\n" +
" showMore = true"
)
assertSourceContains(
source,
"binding.viewContentMostCommentedAudioTitle.setTitle(" +
"R.string.content_recommendation_section_most_commented_audio)"
)
assertSourceContains(
source,
"binding.viewContentRecommendedAudioTitle.setTitle(" +
"R.string.content_recommendation_section_recommended_audio)"
)
assertFalse(source.contains("viewContentNewAndHotTitle.ivSectionTitleChevron.setOnClickListener"))
}
@Test @Test
fun `Phase 4~5 adapter source는 grouping과 badge comment 정책을 포함한다`() { fun `Phase 4~5 adapter source는 grouping과 badge comment 정책을 포함한다`() {
val cardView = projectFile( val cardView = projectFile(