From 2c30da811017d26110e708efa578383805acfe91 Mon Sep 17 00:00:00 2001 From: klaus Date: Wed, 10 Jun 2026 14:26:45 +0900 Subject: [PATCH] =?UTF-8?q?fix(widget):=20CapsuleTab=20=EC=84=A0=ED=83=9D?= =?UTF-8?q?=20=EC=83=89=EC=83=81=EC=9D=84=20=EB=B3=B4=EC=A0=95=ED=95=9C?= =?UTF-8?q?=EB=8B=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sodalive/v2/widget/CapsuleTabBarView.kt | 2 +- .../v2/widget/CapsuleTabBarViewTest.kt | 54 +++++++++++++++++++ 2 files changed, 55 insertions(+), 1 deletion(-) create mode 100644 app/src/test/java/kr/co/vividnext/sodalive/v2/widget/CapsuleTabBarViewTest.kt diff --git a/app/src/main/java/kr/co/vividnext/sodalive/v2/widget/CapsuleTabBarView.kt b/app/src/main/java/kr/co/vividnext/sodalive/v2/widget/CapsuleTabBarView.kt index 1a4db069..c456934e 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/v2/widget/CapsuleTabBarView.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/v2/widget/CapsuleTabBarView.kt @@ -70,7 +70,7 @@ class CapsuleTabBarView @JvmOverloads constructor( text = label isSelected = selected setTextAppearance(R.style.Typography_Body5) - setTextColor(ContextCompat.getColor(context, R.color.white)) + setTextColor(ContextCompat.getColor(context, if (selected) R.color.black else R.color.white)) background = ContextCompat.getDrawable( context, if (selected) R.drawable.bg_capsule_tab_selected else R.drawable.bg_capsule_tab_normal diff --git a/app/src/test/java/kr/co/vividnext/sodalive/v2/widget/CapsuleTabBarViewTest.kt b/app/src/test/java/kr/co/vividnext/sodalive/v2/widget/CapsuleTabBarViewTest.kt new file mode 100644 index 00000000..ad66929f --- /dev/null +++ b/app/src/test/java/kr/co/vividnext/sodalive/v2/widget/CapsuleTabBarViewTest.kt @@ -0,0 +1,54 @@ +package kr.co.vividnext.sodalive.v2.widget + +import android.app.Application +import android.content.Context +import android.view.LayoutInflater +import android.widget.LinearLayout +import android.widget.TextView +import androidx.test.core.app.ApplicationProvider +import kr.co.vividnext.sodalive.R +import org.junit.Assert.assertEquals +import org.junit.Test +import org.junit.runner.RunWith +import org.robolectric.RobolectricTestRunner +import org.robolectric.Shadows.shadowOf +import org.robolectric.annotation.Config + +@RunWith(RobolectricTestRunner::class) +@Config(sdk = [28], application = Application::class) +class CapsuleTabBarViewTest { + + @Test + fun `selected tab은 white background와 black text를 사용한다`() { + val context = ApplicationProvider.getApplicationContext() + val tabBar = inflateTabBar() + + tabBar.setMenus(listOf("전체", "AI 채팅"), selectedIndex = 0) + + val selectedTab = tabBar.tabAt(0) + assertEquals(R.drawable.bg_capsule_tab_selected, shadowOf(selectedTab.background).createdFromResId) + assertEquals(context.getColor(R.color.black), selectedTab.currentTextColor) + } + + @Test + fun `normal tab은 black background와 white text를 사용한다`() { + val context = ApplicationProvider.getApplicationContext() + val tabBar = inflateTabBar() + + tabBar.setMenus(listOf("전체", "AI 채팅"), selectedIndex = 0) + + val normalTab = tabBar.tabAt(1) + assertEquals(R.drawable.bg_capsule_tab_normal, shadowOf(normalTab.background).createdFromResId) + assertEquals(context.getColor(R.color.white), normalTab.currentTextColor) + } + + private fun inflateTabBar(): CapsuleTabBarView { + val context = ApplicationProvider.getApplicationContext() + return LayoutInflater.from(context).inflate(R.layout.view_capsule_tab_bar, null, false) as CapsuleTabBarView + } + + private fun CapsuleTabBarView.tabAt(index: Int): TextView { + val container = findViewById(R.id.ll_capsule_tab_container) + return container.getChildAt(index) as TextView + } +}