fix(content): 전체 탭 grid 폭을 주입한다

This commit is contained in:
2026-06-25 18:31:39 +09:00
parent 78e0a53018
commit 136fdced17
5 changed files with 99 additions and 9 deletions

View File

@@ -119,6 +119,10 @@ class ContentMainFragmentSourceTest {
assertTrue(source.contains("CONTENT_ALL_GRID_SPAN_COUNT"))
assertTrue(source.contains("GridLayoutManager(requireContext(), CONTENT_ALL_GRID_SPAN_COUNT)"))
assertTrue(source.contains("addContentGridItemSpacing(CONTENT_ALL_GRID_SPAN_COUNT)"))
assertTrue(source.contains("import androidx.core.view.doOnLayout"))
assertTrue(source.contains("doOnLayout { updateAllTabGridItemWidth() }"))
assertTrue(source.contains("private fun updateAllTabGridItemWidth()"))
assertTrue(source.contains("binding.rvContentAllItems.calculateContentGridItemWidthPx(CONTENT_ALL_GRID_SPAN_COUNT)"))
assertTrue(source.contains("MainContentAllType.AUDIO"))
assertTrue(source.contains("MainContentAllType.SERIES"))
assertTrue(source.contains("MainContentAllType.ORIGINAL"))
@@ -358,6 +362,56 @@ class ContentMainFragmentSourceTest {
assertEquals(null, banner(link = "mailto:test@example.com").toContentBannerRoute())
}
@Test
fun `content 전체 탭 adapter는 fixed Small card width 대신 grid item width를 사용한다`() {
val fragment = projectFile(
"app/src/main/java/kr/co/vividnext/sodalive/v2/main/content/ContentMainFragment.kt"
).readText()
val audioAdapter = projectFile(
"app/src/main/java/kr/co/vividnext/sodalive/v2/main/content/ui/ContentAllAudioCardAdapter.kt"
).readText()
val seriesAdapter = projectFile(
"app/src/main/java/kr/co/vividnext/sodalive/v2/main/content/ui/ContentAllSeriesCardAdapter.kt"
).readText()
val layoutParams = projectFile(
"app/src/main/java/kr/co/vividnext/sodalive/v2/main/content/ui/ContentRecyclerItemLayoutParams.kt"
).readText()
val audioCard = projectFile(
"app/src/main/java/kr/co/vividnext/sodalive/v2/widget/AudioContentCardView.kt"
).readText()
val seriesCard = projectFile(
"app/src/main/java/kr/co/vividnext/sodalive/v2/widget/SeriesContentCardView.kt"
).readText()
assertFalse(audioAdapter.contains("setSize(AudioContentCardSize.Small)"))
assertFalse(seriesAdapter.contains("setSize(SeriesContentCardSize.Small)"))
assertFalse(audioAdapter.contains("holder.itemView.parent as? RecyclerView"))
assertFalse(seriesAdapter.contains("holder.itemView.parent as? RecyclerView"))
assertSourceContains(audioAdapter, "private var gridItemWidthPx: Int = 0")
assertSourceContains(seriesAdapter, "private var gridItemWidthPx: Int = 0")
assertSourceContains(audioAdapter, "fun setGridItemWidthPx(widthPx: Int)")
assertSourceContains(seriesAdapter, "fun setGridItemWidthPx(widthPx: Int)")
assertSourceContains(audioAdapter, "if (widthPx <= 0 || gridItemWidthPx == widthPx) return")
assertSourceContains(seriesAdapter, "if (widthPx <= 0 || gridItemWidthPx == widthPx) return")
assertSourceContains(fragment, "private fun updateAllTabGridItemWidth()")
assertSourceContains(fragment, "binding.rvContentAllItems.calculateContentGridItemWidthPx(CONTENT_ALL_GRID_SPAN_COUNT)")
assertSourceContains(fragment, "contentAllAudioCardAdapter.setGridItemWidthPx(widthPx)")
assertSourceContains(fragment, "contentAllSeriesCardAdapter.setGridItemWidthPx(widthPx)")
assertSourceContains(fragment, "doOnLayout { updateAllTabGridItemWidth() }")
assertTrue(
"전체 탭 content bind는 item submit 전에 최신 grid width를 adapter에 주입해야 한다.",
fragment.indexOf("updateAllTabGridItemWidth()") <
fragment.indexOf("contentAllSeriesCardAdapter.submitItems(state.seriesItems)")
)
assertSourceContains(audioAdapter, "setGridItemWidthPx(gridItemWidthPx)")
assertSourceContains(seriesAdapter, "setGridItemWidthPx(gridItemWidthPx)")
assertSourceContains(layoutParams, "measuredWidth - paddingLeft - paddingRight")
assertSourceContains(layoutParams, "GRID_ITEM_GAP_DP.dpToPx() * (spanCount - 1)")
assertSourceContains(audioCard, "fun setGridItemWidthPx(widthPx: Int)")
assertSourceContains(seriesCard, "fun setGridItemWidthPx(widthPx: Int)")
assertSourceContains(seriesCard, "172f / 122f")
}
private fun banner(
eventItem: EventItem? = null,
creatorId: Long? = null,