feat(home): 라이브 섹션 전체 아이템을 추가한다
This commit is contained in:
@@ -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
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user