refactor(creator-ranking): 배치 모델을 단순화한다

This commit is contained in:
2026-06-30 02:43:39 +09:00
parent 566f76df6a
commit aac09c14bc
5 changed files with 97 additions and 15 deletions

View File

@@ -6,45 +6,45 @@ import org.junit.Test
class CreatorRankingPlacementTest {
@Test
fun `rank 1 uses large variant and one item row`() {
fun `rank 1은 top ten view type과 1 item row를 사용한다`() {
val placement = CreatorRankingPlacement.fromRank(1)
assertEquals(CreatorRankingCardVariant.Large, placement.variant)
assertEquals(CreatorRankingViewType.TopTen, placement.viewType)
assertEquals(1, placement.itemsPerRow)
}
@Test
fun `rank 2 to 7 uses compact variant and two item row`() {
fun `rank 2부터 7은 top ten view type과 2 item row를 사용한다`() {
(2..7).forEach { rank ->
val placement = CreatorRankingPlacement.fromRank(rank)
assertEquals(CreatorRankingCardVariant.Compact, placement.variant)
assertEquals(CreatorRankingViewType.TopTen, placement.viewType)
assertEquals(2, placement.itemsPerRow)
}
}
@Test
fun `rank 8 to 10 uses compact variant and three item row`() {
fun `rank 8부터 10은 top ten view type과 3 item row를 사용한다`() {
(8..10).forEach { rank ->
val placement = CreatorRankingPlacement.fromRank(rank)
assertEquals(CreatorRankingCardVariant.Compact, placement.variant)
assertEquals(CreatorRankingViewType.TopTen, placement.viewType)
assertEquals(3, placement.itemsPerRow)
}
}
@Test
fun `rank 11 or greater uses horizontal variant and one item row`() {
listOf(11, 12, 100).forEach { rank ->
fun `rank 11부터 20과 20 초과는 lower view type과 1 item row를 사용한다`() {
listOf(11, 12, 20, 21, 100).forEach { rank ->
val placement = CreatorRankingPlacement.fromRank(rank)
assertEquals(CreatorRankingCardVariant.Horizontal, placement.variant)
assertEquals(CreatorRankingViewType.Lower, placement.viewType)
assertEquals(1, placement.itemsPerRow)
}
}
@Test(expected = IllegalArgumentException::class)
fun `rank less than 1 is invalid`() {
fun `rank 1 미만은 유효하지 않다`() {
CreatorRankingPlacement.fromRank(0)
}
}

View File

@@ -0,0 +1,49 @@
package kr.co.vividnext.sodalive.v2.widget.creatorranking
import org.junit.Assert.assertEquals
import org.junit.Test
class CreatorRankingTextStyleTest {
@Test
fun `top 1 item row는 가장 큰 rank name delta text size를 사용한다`() {
val style = CreatorRankingTextStyle.fromRank(1)
assertEquals(96, style.rankTextSizeSp)
assertEquals(32, style.nameTextSizeSp)
assertEquals(16, style.deltaTextSizeSp)
}
@Test
fun `top 2 item row는 중간 rank name delta text size를 사용한다`() {
listOf(2, 7).forEach { rank ->
val style = CreatorRankingTextStyle.fromRank(rank)
assertEquals(54, style.rankTextSizeSp)
assertEquals(22, style.nameTextSizeSp)
assertEquals(16, style.deltaTextSizeSp)
}
}
@Test
fun `top 3 item row는 작은 rank name delta text size를 사용한다`() {
listOf(8, 10).forEach { rank ->
val style = CreatorRankingTextStyle.fromRank(rank)
assertEquals(36, style.rankTextSizeSp)
assertEquals(14, style.nameTextSizeSp)
assertEquals(14, style.deltaTextSizeSp)
}
}
@Test
fun `lower row는 lower 전용 rank name과 기존 delta amount text size를 사용한다`() {
listOf(11, 20, 21).forEach { rank ->
val style = CreatorRankingTextStyle.fromRank(rank)
assertEquals(40, style.rankTextSizeSp)
assertEquals(18, style.nameTextSizeSp)
assertEquals(16, style.deltaTextSizeSp)
}
}
}