Updated on 2026-08-14

This commit is contained in:
Tangem 2026-04-22 14:26:49 +03:00
parent 3baed1e815
commit 5e3da8cc47
3 changed files with 267 additions and 0 deletions

View file

@ -0,0 +1,124 @@
package com.tangem.features.yield.supply.impl.main.model.converter
import com.google.common.truth.Truth.assertThat
import com.tangem.common.ui.earn.EarnBlockUM
import com.tangem.core.ui.extensions.stringReference
import com.tangem.features.yield.supply.impl.main.entity.YieldSupplyUM
import org.junit.jupiter.api.Test
internal class YieldSupplyToEarnBlockConverterTest {
private val converter = YieldSupplyToEarnBlockConverter()
@Test
fun `GIVEN Initial WHEN convert THEN null`() {
val result = converter.convert(YieldSupplyUM.Initial)
assertThat(result).isNull()
}
@Test
fun `GIVEN Unavailable WHEN convert THEN null`() {
val result = converter.convert(YieldSupplyUM.Unavailable)
assertThat(result).isNull()
}
@Test
fun `GIVEN Loading WHEN convert THEN EarnBlockUM Loading`() {
val result = converter.convert(YieldSupplyUM.Loading)
assertThat(result).isEqualTo(EarnBlockUM.Loading)
}
@Test
fun `GIVEN Content WHEN convert THEN Content`() {
var clicked = false
val content = YieldSupplyUM.Content(
apy = "5.1",
title = stringReference("Yield Mode"),
subtitle = stringReference("Interest accrues automatically"),
rewardsApy = stringReference("APY 5.1%"),
onClick = { clicked = true },
showWarningIcon = false,
showInfoIcon = false,
)
val result = converter.convert(content)
assertThat(result).isInstanceOf(EarnBlockUM.Content::class.java)
val earnBlock = result as EarnBlockUM.Content
assertThat(earnBlock.type).isEqualTo(EarnBlockUM.Type.YieldSupply)
assertThat(earnBlock.backgroundUM).isEqualTo(EarnBlockUM.BackgroundUM.Surface)
assertThat(earnBlock.iconUM).isInstanceOf(EarnBlockUM.IconUM.Glowing::class.java)
assertThat(earnBlock.titleUM.tone).isEqualTo(EarnBlockUM.TitleUM.Tone.Primary)
assertThat((earnBlock.subtitleUM as EarnBlockUM.SubtitleUM.Text).tone)
.isEqualTo(EarnBlockUM.SubtitleUM.Tone.Accent)
assertThat(earnBlock.trailingUM).isInstanceOf(EarnBlockUM.TrailingUM.Button::class.java)
val button = earnBlock.trailingUM as EarnBlockUM.TrailingUM.Button
assertThat(button.isEnabled).isTrue()
assertThat(earnBlock.onClick).isNotNull()
earnBlock.onClick?.invoke()
assertThat(clicked).isTrue()
}
@Test
fun `GIVEN Processing Enter WHEN convert THEN Surface Content`() {
val result = converter.convert(YieldSupplyUM.Processing.Enter)
assertThat(result).isInstanceOf(EarnBlockUM.Content::class.java)
val earnBlock = result as EarnBlockUM.Content
assertThat(earnBlock.type).isEqualTo(EarnBlockUM.Type.YieldSupply)
assertThat(earnBlock.backgroundUM).isEqualTo(EarnBlockUM.BackgroundUM.Surface)
assertThat(earnBlock.iconUM).isInstanceOf(EarnBlockUM.IconUM.Glowing::class.java)
assertThat(earnBlock.trailingUM).isNull()
}
@Test
fun `GIVEN Processing Exit WHEN convert THEN Surface Content`() {
val result = converter.convert(YieldSupplyUM.Processing.Exit)
assertThat(result).isInstanceOf(EarnBlockUM.Content::class.java)
val earnBlock = result as EarnBlockUM.Content
assertThat(earnBlock.type).isEqualTo(EarnBlockUM.Type.YieldSupply)
assertThat(earnBlock.backgroundUM).isEqualTo(EarnBlockUM.BackgroundUM.Surface)
assertThat(earnBlock.iconUM).isInstanceOf(EarnBlockUM.IconUM.Plain::class.java)
assertThat(earnBlock.trailingUM).isNull()
}
@Test
fun `GIVEN Available WHEN convert THEN Content with expected structure`() {
var clicked = false
val available = YieldSupplyUM.Available(
apy = "5.1",
apyText = stringReference("5.1 % APY"),
title = stringReference("Yield Mode"),
onClick = { clicked = true },
)
val result = converter.convert(available)
assertThat(result).isInstanceOf(EarnBlockUM.Content::class.java)
val content = result as EarnBlockUM.Content
assertThat(content.type).isEqualTo(EarnBlockUM.Type.YieldSupply)
assertThat(content.backgroundUM).isEqualTo(EarnBlockUM.BackgroundUM.AccentSoft)
assertThat(content.iconUM).isInstanceOf(EarnBlockUM.IconUM.Glowing::class.java)
assertThat(content.titleUM.style).isEqualTo(EarnBlockUM.TitleUM.Style.Large)
assertThat(content.titleUM.tone).isEqualTo(EarnBlockUM.TitleUM.Tone.Primary)
assertThat(content.subtitleUM).isInstanceOf(EarnBlockUM.SubtitleUM.Text::class.java)
val subtitle = content.subtitleUM as EarnBlockUM.SubtitleUM.Text
assertThat(subtitle.style).isEqualTo(EarnBlockUM.SubtitleUM.Style.Small)
assertThat(subtitle.tone).isEqualTo(EarnBlockUM.SubtitleUM.Tone.Accent)
assertThat(content.trailingUM).isInstanceOf(EarnBlockUM.TrailingUM.Button::class.java)
val button = content.trailingUM as EarnBlockUM.TrailingUM.Button
assertThat(button.isEnabled).isTrue()
assertThat(content.onClick).isNotNull()
content.onClick?.invoke()
assertThat(clicked).isTrue()
}
}