feat(content): 시리즈 성인 배지를 추가한다

This commit is contained in:
2026-06-25 01:55:16 +09:00
parent af895ed510
commit cdc847dcca
3 changed files with 150 additions and 0 deletions

View File

@@ -0,0 +1,91 @@
package kr.co.vividnext.sodalive.v2.widget
import android.app.Application
import android.content.Context
import android.view.LayoutInflater
import android.view.View
import android.widget.FrameLayout
import android.widget.ImageView
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 SeriesContentCardViewTest {
@Test
fun `inflate 직후 adult badge는 숨겨져 있다`() {
val card = inflateCard()
assertEquals(View.GONE, card.adultBadge().visibility)
}
@Test
fun `setAdultVisible은 adult badge visibility를 변경한다`() {
val card = inflateCard()
card.setAdultVisible(true)
assertEquals(View.VISIBLE, card.adultBadge().visibility)
card.setAdultVisible(false)
assertEquals(View.GONE, card.adultBadge().visibility)
}
@Test
fun `large size는 24dp adult badge와 large shield icon을 사용한다`() {
val card = inflateCard()
card.setSize(SeriesContentCardSize.Large)
val badge = card.adultBadge()
val params = badge.layoutParams as FrameLayout.LayoutParams
assertEquals(24.dpToPx(), params.width)
assertEquals(24.dpToPx(), params.height)
assertEquals(8.dpToPx(), params.topMargin)
assertEquals(8.dpToPx(), params.marginEnd)
assertEquals(R.drawable.ic_new_shield_large, shadowOf(badge.drawable).createdFromResId)
}
@Test
fun `small size는 18dp adult badge와 small shield icon을 사용한다`() {
val card = inflateCard()
card.setSize(SeriesContentCardSize.Small)
val badge = card.adultBadge()
val params = badge.layoutParams as FrameLayout.LayoutParams
assertEquals(18.dpToPx(), params.width)
assertEquals(18.dpToPx(), params.height)
assertEquals(6.dpToPx(), params.topMargin)
assertEquals(6.dpToPx(), params.marginEnd)
assertEquals(R.drawable.ic_new_shield_small, shadowOf(badge.drawable).createdFromResId)
}
@Test
fun `adult badge background는 creator channel adult badge drawable을 사용한다`() {
val card = inflateCard()
assertEquals(
R.drawable.bg_creator_channel_live_adult_badge,
shadowOf(card.adultBadge().background).createdFromResId
)
}
private fun inflateCard(): SeriesContentCardView {
val context = ApplicationProvider.getApplicationContext<Context>()
return LayoutInflater.from(context).inflate(R.layout.view_series_content_card, null, false) as SeriesContentCardView
}
private fun SeriesContentCardView.adultBadge(): ImageView = findViewById(R.id.iv_series_content_adult_badge)
private fun Int.dpToPx(): Int {
val context = ApplicationProvider.getApplicationContext<Context>()
return (this * context.resources.displayMetrics.density).toInt()
}
}