Updated on 2026-08-14
This commit is contained in:
parent
3baed1e815
commit
5e3da8cc47
3 changed files with 267 additions and 0 deletions
|
|
@ -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()
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue