From 6b0232b7e41cb77668b7fb622eed3c3b3e37f06a Mon Sep 17 00:00:00 2001 From: klaus Date: Tue, 9 Jun 2026 14:55:58 +0900 Subject: [PATCH] =?UTF-8?q?test(widget):=20=EB=9E=AD=ED=82=B9=20=EC=88=9C?= =?UTF-8?q?=EC=9C=84=20=ED=85=8D=EC=8A=A4=ED=8A=B8=20=EC=A0=95=EB=A0=AC=20?= =?UTF-8?q?=EA=B2=80=EC=A6=9D=EC=9D=84=20=EC=B6=94=EA=B0=80=ED=95=9C?= =?UTF-8?q?=EB=8B=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../view_creator_ranking_compact_card.xml | 1 + .../view_creator_ranking_horizontal_card.xml | 1 + .../view_creator_ranking_large_card.xml | 1 + .../CreatorRankingAdapterLayoutTest.kt | 77 +++++++++++++++++++ 4 files changed, 80 insertions(+) diff --git a/app/src/main/res/layout/view_creator_ranking_compact_card.xml b/app/src/main/res/layout/view_creator_ranking_compact_card.xml index 95ac5790..d1b35767 100644 --- a/app/src/main/res/layout/view_creator_ranking_compact_card.xml +++ b/app/src/main/res/layout/view_creator_ranking_compact_card.xml @@ -23,6 +23,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:fontFamily="@font/pattaya_regular" + android:gravity="center" android:includeFontPadding="false" android:shadowColor="#7A000000" android:shadowRadius="4" diff --git a/app/src/main/res/layout/view_creator_ranking_horizontal_card.xml b/app/src/main/res/layout/view_creator_ranking_horizontal_card.xml index 825f1d7c..96d5e723 100644 --- a/app/src/main/res/layout/view_creator_ranking_horizontal_card.xml +++ b/app/src/main/res/layout/view_creator_ranking_horizontal_card.xml @@ -16,6 +16,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:fontFamily="@font/pattaya_regular" + android:gravity="center" android:includeFontPadding="false" android:shadowColor="#7A000000" android:shadowRadius="4" diff --git a/app/src/main/res/layout/view_creator_ranking_large_card.xml b/app/src/main/res/layout/view_creator_ranking_large_card.xml index 50bf5c4e..735bc59c 100644 --- a/app/src/main/res/layout/view_creator_ranking_large_card.xml +++ b/app/src/main/res/layout/view_creator_ranking_large_card.xml @@ -23,6 +23,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:fontFamily="@font/pattaya_regular" + android:gravity="center" android:includeFontPadding="false" android:shadowColor="#7A000000" android:shadowRadius="4" diff --git a/app/src/test/java/kr/co/vividnext/sodalive/v2/widget/creatorranking/CreatorRankingAdapterLayoutTest.kt b/app/src/test/java/kr/co/vividnext/sodalive/v2/widget/creatorranking/CreatorRankingAdapterLayoutTest.kt index b8afb1b2..0cf08969 100644 --- a/app/src/test/java/kr/co/vividnext/sodalive/v2/widget/creatorranking/CreatorRankingAdapterLayoutTest.kt +++ b/app/src/test/java/kr/co/vividnext/sodalive/v2/widget/creatorranking/CreatorRankingAdapterLayoutTest.kt @@ -2,8 +2,11 @@ package kr.co.vividnext.sodalive.v2.widget.creatorranking import android.app.Application import android.content.Context +import android.view.Gravity import android.view.LayoutInflater import android.view.View +import android.view.ViewGroup +import android.widget.TextView import androidx.test.core.app.ApplicationProvider import kr.co.vividnext.sodalive.R import kr.co.vividnext.sodalive.v2.widget.ranking.RankingChangeType.Increase @@ -38,6 +41,65 @@ class CreatorRankingAdapterLayoutTest { } } + @Test + fun `large card 순위 숫자는 Figma 고정 박스 안에서 중앙 정렬된다`() { + val view = inflateView(R.layout.view_creator_ranking_large_card) + + view.setCardSize(CreatorRankingCardSize(widthPx = 374, heightPx = 374)) + + assertRankTextBox( + view = view.findViewById(R.id.tv_creator_ranking_rank), + expectedWidth = 112, + expectedHeight = 124, + expectedLeft = 0, + expectedTop = 0 + ) + } + + @Test + fun `compact medium card 순위 숫자는 Figma 고정 박스 안에서 중앙 정렬된다`() { + val view = inflateView(R.layout.view_creator_ranking_compact_card) + + view.setCardSize(CreatorRankingCardSize(widthPx = 185, heightPx = 185)) + + assertRankTextBox( + view = view.findViewById(R.id.tv_creator_ranking_rank), + expectedWidth = 55, + expectedHeight = 75, + expectedLeft = 0, + expectedTop = 0 + ) + } + + @Test + fun `compact small card 순위 숫자는 Figma 고정 박스 안에서 중앙 정렬된다`() { + val view = inflateView(R.layout.view_creator_ranking_compact_card) + + view.setCardSize(CreatorRankingCardSize(widthPx = 122, heightPx = 122)) + + assertRankTextBox( + view = view.findViewById(R.id.tv_creator_ranking_rank), + expectedWidth = 42, + expectedHeight = 56, + expectedLeft = 8, + expectedTop = 0 + ) + } + + @Test + fun `horizontal card 순위 그룹은 Figma 고정 박스 위치를 유지한다`() { + val view = inflateView(R.layout.view_creator_ranking_horizontal_card) + + view.setCardSize(CreatorRankingCardSize(widthPx = 374, heightPx = 100)) + + val rankGroup = view.findViewById(R.id.ll_creator_ranking_rank_group) + val params = rankGroup.layoutParams as ViewGroup.MarginLayoutParams + assertEquals(49, params.width) + assertEquals(ViewGroup.LayoutParams.WRAP_CONTENT, params.height) + assertEquals(14, params.leftMargin) + assertEquals(14, params.topMargin) + } + @Test fun `large card는 순위 변동 숨김이면 delta를 숨긴다`() { val view = inflateView(R.layout.view_creator_ranking_large_card) @@ -92,6 +154,21 @@ class CreatorRankingAdapterLayoutTest { assertEquals(View.VISIBLE, view.findViewById(R.id.ll_creator_ranking_delta).visibility) } + private fun assertRankTextBox( + view: TextView, + expectedWidth: Int, + expectedHeight: Int, + expectedLeft: Int, + expectedTop: Int + ) { + val params = view.layoutParams as ViewGroup.MarginLayoutParams + assertEquals(expectedWidth, params.width) + assertEquals(expectedHeight, params.height) + assertEquals(expectedLeft, params.leftMargin) + assertEquals(expectedTop, params.topMargin) + assertEquals(Gravity.CENTER, view.gravity) + } + private inline fun inflateView(layoutResId: Int): T { val context = ApplicationProvider.getApplicationContext() return LayoutInflater.from(context).inflate(layoutResId, null, false) as T