feat(home): 라이브 섹션 전체 아이템을 추가한다

This commit is contained in:
2026-06-02 17:04:53 +09:00
parent 0e50d7f8d5
commit 9b29623f6f
4 changed files with 136 additions and 13 deletions

View File

@@ -2,15 +2,20 @@ package kr.co.vividnext.sodalive.v2.main.home
import android.app.Application
import android.content.Context
import android.graphics.drawable.ColorDrawable
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.ImageView
import android.widget.LinearLayout
import android.widget.TextView
import androidx.core.widget.NestedScrollView
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import androidx.test.core.app.ApplicationProvider
import kr.co.vividnext.sodalive.R
import kr.co.vividnext.sodalive.v2.main.home.model.HomeRecommendationLiveUiModel
import kr.co.vividnext.sodalive.v2.main.home.ui.HomeLiveAdapter
import kr.co.vividnext.sodalive.v2.widget.TextTabBarView
import kr.co.vividnext.sodalive.v2.widget.banner.BannerView
import org.junit.Assert.assertEquals
@@ -119,6 +124,56 @@ class HomeMainFragmentLayoutTest {
assertEquals(View.GONE, popularCommunitySection.visibility)
}
@Test
fun `home live section matches figma row dimensions`() {
val root = inflateView(R.layout.fragment_v2_main_home)
val liveList = root.findViewById<RecyclerView>(R.id.rv_home_lives)
assertNotNull(liveList)
assertEquals(102.dpToPx(), liveList.layoutParams.height)
assertEquals(20.dpToPx(), liveList.paddingStart)
}
@Test
fun `home live adapter uses figma item gap`() {
val context = ApplicationProvider.getApplicationContext<Context>()
val parent = RecyclerView(context)
parent.layoutManager = LinearLayoutManager(context, RecyclerView.HORIZONTAL, false)
val viewHolder = HomeLiveAdapter().onCreateViewHolder(parent, 0)
val layoutParams = viewHolder.itemView.layoutParams as ViewGroup.MarginLayoutParams
assertEquals(14.dpToPx(), layoutParams.marginEnd)
}
@Test
fun `home live adapter appends all item after twenty lives`() {
val context = ApplicationProvider.getApplicationContext<Context>()
val parent = RecyclerView(context)
parent.layoutManager = LinearLayoutManager(context, RecyclerView.HORIZONTAL, false)
val adapter = HomeLiveAdapter()
adapter.submitItems((1L..21L).map(::liveItem))
val viewHolder = adapter.onCreateViewHolder(parent, adapter.getItemViewType(20))
adapter.onBindViewHolder(viewHolder, 20)
val moreText = viewHolder.itemView as TextView
assertEquals(21, adapter.itemCount)
assertEquals(context.getString(R.string.screen_home_theme_all), moreText.text.toString())
assertEquals(58.dpToPx(), moreText.layoutParams.width)
assertEquals(102.dpToPx(), moreText.layoutParams.height)
assertEquals(context.getColor(R.color.soda_400), moreText.currentTextColor)
assertEquals(context.getColor(R.color.black), (moreText.background as ColorDrawable).color)
}
@Test
fun `home live adapter caps lives before all item`() {
val adapter = HomeLiveAdapter()
adapter.submitItems((1L..22L).map(::liveItem))
assertEquals(21, adapter.itemCount)
}
@Test
fun `home layout uses section title components and custom genre title row`() {
val root = inflateView(R.layout.fragment_v2_main_home)
@@ -193,4 +248,15 @@ class HomeMainFragmentLayoutTest {
val context = ApplicationProvider.getApplicationContext<Context>()
return (this * context.resources.displayMetrics.density).toInt()
}
private fun liveItem(id: Long): HomeRecommendationLiveUiModel {
return HomeRecommendationLiveUiModel(
liveId = id,
creatorId = id,
imageUrl = null,
title = "title$id",
creatorNickname = "creator$id",
beginDateTime = null
)
}
}