fix(content): 콘텐츠 카드 동적 폭을 추가한다

This commit is contained in:
2026-06-25 18:31:26 +09:00
parent 15de359d4f
commit 78e0a53018
4 changed files with 129 additions and 0 deletions

View File

@@ -0,0 +1,46 @@
package kr.co.vividnext.sodalive.v2.widget
import android.app.Application
import android.content.Context
import android.view.LayoutInflater
import android.view.ViewGroup
import android.widget.FrameLayout
import android.widget.LinearLayout
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.annotation.Config
@RunWith(RobolectricTestRunner::class)
@Config(sdk = [28], application = Application::class)
class AudioContentCardViewTest {
@Test
fun `grid item width는 audio thumbnail과 label 폭 및 1대1 높이를 적용한다`() {
val card = inflateCard()
card.setGridItemWidthPx(137)
val thumbnailParams = card.thumbnailContainer().layoutParams as LinearLayout.LayoutParams
val thumbnailImageParams = card.thumbnailView().layoutParams as FrameLayout.LayoutParams
val labelParams = card.labelContainer().layoutParams as LinearLayout.LayoutParams
assertEquals(137, card.layoutParams.width)
assertEquals(137, thumbnailParams.width)
assertEquals(137, thumbnailParams.height)
assertEquals(ViewGroup.LayoutParams.MATCH_PARENT, thumbnailImageParams.width)
assertEquals(ViewGroup.LayoutParams.MATCH_PARENT, thumbnailImageParams.height)
assertEquals(137, labelParams.width)
}
private fun inflateCard(): AudioContentCardView {
val context = ApplicationProvider.getApplicationContext<Context>()
return LayoutInflater.from(context).inflate(R.layout.view_audio_content_card, null, false) as AudioContentCardView
}
private fun AudioContentCardView.thumbnailContainer(): FrameLayout = findViewById(R.id.fl_audio_content_thumbnail_container)
private fun AudioContentCardView.labelContainer(): LinearLayout = findViewById(R.id.ll_audio_content_label)
}

View File

@@ -4,8 +4,10 @@ import android.app.Application
import android.content.Context
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.FrameLayout
import android.widget.ImageView
import android.widget.LinearLayout
import androidx.test.core.app.ApplicationProvider
import kr.co.vividnext.sodalive.R
import org.junit.Assert.assertEquals
@@ -14,6 +16,7 @@ import org.junit.runner.RunWith
import org.robolectric.RobolectricTestRunner
import org.robolectric.Shadows.shadowOf
import org.robolectric.annotation.Config
import kotlin.math.roundToInt
@RunWith(RobolectricTestRunner::class)
@Config(sdk = [28], application = Application::class)
@@ -77,6 +80,23 @@ class SeriesContentCardViewTest {
)
}
@Test
fun `grid item width는 series thumbnail과 label 폭 및 122대172 높이를 적용한다`() {
val card = inflateCard()
card.setGridItemWidthPx(137)
val thumbnailParams = card.thumbnailContainer().layoutParams as LinearLayout.LayoutParams
val thumbnailImageParams = card.thumbnailView().layoutParams as FrameLayout.LayoutParams
val labelParams = card.labelContainer().layoutParams as LinearLayout.LayoutParams
assertEquals(137, card.layoutParams.width)
assertEquals(137, thumbnailParams.width)
assertEquals((137 * 172f / 122f).roundToInt(), thumbnailParams.height)
assertEquals(ViewGroup.LayoutParams.MATCH_PARENT, thumbnailImageParams.width)
assertEquals(ViewGroup.LayoutParams.MATCH_PARENT, thumbnailImageParams.height)
assertEquals(137, labelParams.width)
}
private fun inflateCard(): SeriesContentCardView {
val context = ApplicationProvider.getApplicationContext<Context>()
return LayoutInflater.from(context).inflate(R.layout.view_series_content_card, null, false) as SeriesContentCardView
@@ -84,6 +104,10 @@ class SeriesContentCardViewTest {
private fun SeriesContentCardView.adultBadge(): ImageView = findViewById(R.id.iv_series_content_adult_badge)
private fun SeriesContentCardView.thumbnailContainer(): FrameLayout = findViewById(R.id.fl_series_thumbnail_container)
private fun SeriesContentCardView.labelContainer(): LinearLayout = findViewById(R.id.ll_series_content_label)
private fun Int.dpToPx(): Int {
val context = ApplicationProvider.getApplicationContext<Context>()
return (this * context.resources.displayMetrics.density).toInt()