diff --git a/app/src/main/java/kr/co/vividnext/sodalive/v2/main/home/ui/HomeAiCharacterAdapter.kt b/app/src/main/java/kr/co/vividnext/sodalive/v2/main/home/ui/HomeAiCharacterAdapter.kt
index cad31d71..13b85505 100644
--- a/app/src/main/java/kr/co/vividnext/sodalive/v2/main/home/ui/HomeAiCharacterAdapter.kt
+++ b/app/src/main/java/kr/co/vividnext/sodalive/v2/main/home/ui/HomeAiCharacterAdapter.kt
@@ -23,7 +23,8 @@ class HomeAiCharacterAdapter : RecyclerView.Adapter
diff --git a/app/src/test/java/kr/co/vividnext/sodalive/v2/main/home/HomeMainFragmentLayoutTest.kt b/app/src/test/java/kr/co/vividnext/sodalive/v2/main/home/HomeMainFragmentLayoutTest.kt
index d62492fd..ec02121a 100644
--- a/app/src/test/java/kr/co/vividnext/sodalive/v2/main/home/HomeMainFragmentLayoutTest.kt
+++ b/app/src/test/java/kr/co/vividnext/sodalive/v2/main/home/HomeMainFragmentLayoutTest.kt
@@ -17,6 +17,7 @@ import androidx.test.core.app.ApplicationProvider
import kr.co.vividnext.sodalive.R
import kr.co.vividnext.sodalive.v2.main.home.model.HomeRecommendationFirstAudioContentUiModel
import kr.co.vividnext.sodalive.v2.main.home.model.HomeRecommendationLiveUiModel
+import kr.co.vividnext.sodalive.v2.main.home.ui.HomeAiCharacterAdapter
import kr.co.vividnext.sodalive.v2.main.home.ui.HomeFirstAudioAdapter
import kr.co.vividnext.sodalive.v2.main.home.ui.HomeLiveAdapter
import kr.co.vividnext.sodalive.v2.main.home.ui.HomeRecentDebutCreatorAdapter
@@ -183,6 +184,41 @@ class HomeMainFragmentLayoutTest {
assertEquals(4.dpToPx(), layoutParams.marginEnd)
}
+ @Test
+ fun `character chat thumbnail preserves figma root dimensions`() {
+ val thumbnail = inflateViewWithParent(R.layout.view_character_chat_thumbnail)
+
+ assertEquals(185.dpToPx(), thumbnail.layoutParams.width)
+ assertEquals(ViewGroup.LayoutParams.WRAP_CONTENT, thumbnail.layoutParams.height)
+ }
+
+ @Test
+ fun `home ai character section matches figma list spacing`() {
+ val root = inflateView(R.layout.fragment_v2_main_home)
+ val characterList = root.findViewById(R.id.rv_home_ai_characters)
+ val context = ApplicationProvider.getApplicationContext()
+ val parent = RecyclerView(context)
+ parent.layoutManager = LinearLayoutManager(context, RecyclerView.HORIZONTAL, false)
+ val viewHolder = HomeAiCharacterAdapter().onCreateViewHolder(parent, 0)
+ val layoutParams = viewHolder.itemView.layoutParams as ViewGroup.MarginLayoutParams
+
+ assertEquals(14.dpToPx(), characterList.paddingStart)
+ assertEquals(14.dpToPx(), characterList.paddingEnd)
+ assertEquals(14.dpToPx(), (characterList.layoutParams as ViewGroup.MarginLayoutParams).topMargin)
+ assertEquals(4.dpToPx(), layoutParams.marginEnd)
+ }
+
+ @Test
+ fun `home ai character adapter preserves layout defined item dimensions`() {
+ val context = ApplicationProvider.getApplicationContext()
+ val parent = RecyclerView(context)
+ parent.layoutManager = LinearLayoutManager(context, RecyclerView.HORIZONTAL, false)
+ val viewHolder = HomeAiCharacterAdapter().onCreateViewHolder(parent, 0)
+
+ assertEquals(185.dpToPx(), viewHolder.itemView.layoutParams.width)
+ assertEquals(ViewGroup.LayoutParams.WRAP_CONTENT, viewHolder.itemView.layoutParams.height)
+ }
+
@Test
fun `first audio adapter clips thumbnail container`() {
val context = ApplicationProvider.getApplicationContext()