Updated on 2026-08-14
This commit is contained in:
parent
698f1e6047
commit
d84f383cf8
29 changed files with 567 additions and 547 deletions
|
|
@ -78,7 +78,6 @@ internal class YieldSupplyToEarnBlockConverter : Converter<YieldSupplyUM, EarnBl
|
|||
text = resourceReference(CoreResR.string.yield_module_transaction_enter),
|
||||
style = EarnBlockUM.TitleUM.Style.Large,
|
||||
tone = EarnBlockUM.TitleUM.Tone.Primary,
|
||||
iconUM = buildTitleIcon(value),
|
||||
),
|
||||
subtitleUM = EarnBlockUM.SubtitleUM.Text(
|
||||
text = combinedReference(
|
||||
|
|
@ -89,18 +88,19 @@ internal class YieldSupplyToEarnBlockConverter : Converter<YieldSupplyUM, EarnBl
|
|||
style = EarnBlockUM.SubtitleUM.Style.Small,
|
||||
tone = EarnBlockUM.SubtitleUM.Tone.Accent,
|
||||
),
|
||||
trailingUM = EarnBlockUM.TrailingUM.Button(
|
||||
text = resourceReference(CoreResR.string.details_title),
|
||||
style = EarnBlockUM.TrailingUM.Button.Style.Secondary,
|
||||
),
|
||||
trailingUM = buildTrailing(value),
|
||||
onClick = value.onClick,
|
||||
)
|
||||
}
|
||||
|
||||
private fun buildTitleIcon(value: YieldSupplyUM.Content): EarnBlockUM.TitleUM.IconUM? = when {
|
||||
value.shouldShowWarningIcon -> EarnBlockUM.TitleUM.IconUM(tone = EarnBlockUM.TitleUM.IconTone.Warning)
|
||||
value.shouldShowInfoIcon -> EarnBlockUM.TitleUM.IconUM(tone = EarnBlockUM.TitleUM.IconTone.Info)
|
||||
else -> null
|
||||
private fun buildTrailing(value: YieldSupplyUM.Content): EarnBlockUM.TrailingUM = when {
|
||||
value.shouldShowWarningIcon -> EarnBlockUM.TrailingUM.StatusIcon(
|
||||
tone = EarnBlockUM.TrailingUM.StatusIcon.Tone.Warning,
|
||||
)
|
||||
value.shouldShowInfoIcon -> EarnBlockUM.TrailingUM.StatusIcon(
|
||||
tone = EarnBlockUM.TrailingUM.StatusIcon.Tone.Info,
|
||||
)
|
||||
else -> EarnBlockUM.TrailingUM.Chevron
|
||||
}
|
||||
|
||||
private fun buildProcessingEnter(): EarnBlockUM.Content {
|
||||
|
|
@ -109,17 +109,18 @@ internal class YieldSupplyToEarnBlockConverter : Converter<YieldSupplyUM, EarnBl
|
|||
backgroundUM = EarnBlockUM.BackgroundUM.Surface,
|
||||
iconUM = EarnBlockUM.IconUM.Glowing(iconRes = CoreUiR.drawable.ic_yield_40),
|
||||
titleUM = EarnBlockUM.TitleUM(
|
||||
text = resourceReference(CoreResR.string.common_yield_mode),
|
||||
text = combinedReference(
|
||||
resourceReference(CoreResR.string.common_yield_mode),
|
||||
stringReference(StringsSigns.WHITE_SPACE),
|
||||
resourceReference(CoreResR.string.common_enabling),
|
||||
),
|
||||
style = EarnBlockUM.TitleUM.Style.Large,
|
||||
tone = EarnBlockUM.TitleUM.Tone.Primary,
|
||||
),
|
||||
subtitleUM = EarnBlockUM.SubtitleUM.Text(
|
||||
text = resourceReference(CoreResR.string.common_enabling),
|
||||
style = EarnBlockUM.SubtitleUM.Style.Small,
|
||||
tone = EarnBlockUM.SubtitleUM.Tone.Accent,
|
||||
loader = EarnBlockUM.SubtitleUM.Loader(tone = EarnBlockUM.SubtitleUM.LoaderTone.Positive),
|
||||
subtitleUM = null,
|
||||
trailingUM = EarnBlockUM.TrailingUM.Loader(
|
||||
tone = EarnBlockUM.TrailingUM.Loader.LoaderTone.Positive,
|
||||
),
|
||||
trailingUM = null,
|
||||
)
|
||||
}
|
||||
|
||||
|
|
@ -127,19 +128,23 @@ internal class YieldSupplyToEarnBlockConverter : Converter<YieldSupplyUM, EarnBl
|
|||
return EarnBlockUM.Content(
|
||||
type = EarnBlockUM.Type.YieldSupply,
|
||||
backgroundUM = EarnBlockUM.BackgroundUM.Surface,
|
||||
iconUM = EarnBlockUM.IconUM.Plain(iconRes = CoreUiR.drawable.ic_yield_disabling_40),
|
||||
iconUM = EarnBlockUM.IconUM.Glowing(
|
||||
iconRes = CoreUiR.drawable.ic_yield_40,
|
||||
tone = EarnBlockUM.IconUM.Tone.Warning,
|
||||
),
|
||||
titleUM = EarnBlockUM.TitleUM(
|
||||
text = resourceReference(CoreResR.string.common_yield_mode),
|
||||
text = combinedReference(
|
||||
resourceReference(CoreResR.string.common_yield_mode),
|
||||
stringReference(StringsSigns.WHITE_SPACE),
|
||||
resourceReference(CoreResR.string.common_disabling),
|
||||
),
|
||||
style = EarnBlockUM.TitleUM.Style.Large,
|
||||
tone = EarnBlockUM.TitleUM.Tone.Primary,
|
||||
),
|
||||
subtitleUM = EarnBlockUM.SubtitleUM.Text(
|
||||
text = resourceReference(CoreResR.string.common_disabling),
|
||||
style = EarnBlockUM.SubtitleUM.Style.Small,
|
||||
tone = EarnBlockUM.SubtitleUM.Tone.Disabled,
|
||||
loader = EarnBlockUM.SubtitleUM.Loader(tone = EarnBlockUM.SubtitleUM.LoaderTone.Muted),
|
||||
subtitleUM = null,
|
||||
trailingUM = EarnBlockUM.TrailingUM.Loader(
|
||||
tone = EarnBlockUM.TrailingUM.Loader.LoaderTone.Muted,
|
||||
),
|
||||
trailingUM = null,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
@ -1,10 +1,6 @@
|
|||
package com.tangem.features.yield.supply.impl.main.model
|
||||
|
||||
import arrow.core.Option
|
||||
import arrow.core.left
|
||||
import arrow.core.none
|
||||
import arrow.core.right
|
||||
import arrow.core.some
|
||||
import arrow.core.*
|
||||
import com.google.common.truth.Truth.assertThat
|
||||
import com.tangem.common.routing.AppRoute
|
||||
import com.tangem.common.routing.AppRouter
|
||||
|
|
@ -34,27 +30,13 @@ import com.tangem.domain.yield.supply.models.YieldMarketToken
|
|||
import com.tangem.domain.yield.supply.models.YieldSupplyPendingStatus
|
||||
import com.tangem.domain.yield.supply.promo.usecase.GetBoostedApyUseCase
|
||||
import com.tangem.domain.yield.supply.promo.usecase.IsYieldBoostPromoEnabledForTokenUseCase
|
||||
import com.tangem.domain.yield.supply.usecase.YieldSupplyActivateUseCase
|
||||
import com.tangem.domain.yield.supply.usecase.YieldSupplyDeactivateUseCase
|
||||
import com.tangem.domain.yield.supply.usecase.YieldSupplyEnterStatusFlowUseCase
|
||||
import com.tangem.domain.yield.supply.usecase.YieldSupplyEnterStatusUseCase
|
||||
import com.tangem.domain.yield.supply.usecase.YieldSupplyGetDustMinAmountUseCase
|
||||
import com.tangem.domain.yield.supply.usecase.YieldSupplyGetTokenStatusUseCase
|
||||
import com.tangem.domain.yield.supply.usecase.YieldSupplyIsAvailableUseCase
|
||||
import com.tangem.domain.yield.supply.usecase.YieldSupplyMinAmountUseCase
|
||||
import com.tangem.domain.yield.supply.usecase.*
|
||||
import com.tangem.features.yield.supply.api.YieldSupplyComponent
|
||||
import com.tangem.features.yield.supply.api.analytics.YieldSupplyAnalytics
|
||||
import com.tangem.features.yield.supply.impl.YieldBoostStoryPreloader
|
||||
import com.tangem.features.yield.supply.impl.main.entity.YieldSupplyUM
|
||||
import com.tangem.utils.coroutines.TestingCoroutineDispatcherProvider
|
||||
import io.mockk.coEvery
|
||||
import io.mockk.coVerify
|
||||
import io.mockk.every
|
||||
import io.mockk.mockk
|
||||
import io.mockk.mockkObject
|
||||
import io.mockk.slot
|
||||
import io.mockk.unmockkObject
|
||||
import io.mockk.verify
|
||||
import io.mockk.*
|
||||
import kotlinx.coroutines.ExperimentalCoroutinesApi
|
||||
import kotlinx.coroutines.flow.MutableStateFlow
|
||||
import kotlinx.coroutines.flow.flowOf
|
||||
|
|
@ -258,7 +240,9 @@ internal class YieldSupplyModelTest {
|
|||
assertThat(approveEvent.blockchain).isEqualTo("Ethereum")
|
||||
|
||||
val block = model.uiState.value as EarnBlockUM.Content
|
||||
assertThat(block.titleUM.iconUM?.tone).isEqualTo(EarnBlockUM.TitleUM.IconTone.Warning)
|
||||
assertThat(block.trailingUM).isEqualTo(
|
||||
EarnBlockUM.TrailingUM.StatusIcon(tone = EarnBlockUM.TrailingUM.StatusIcon.Tone.Warning),
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
@ -290,7 +274,9 @@ internal class YieldSupplyModelTest {
|
|||
assertThat(legacy.shouldShowInfoIcon).isTrue()
|
||||
assertThat(legacy.shouldShowWarningIcon).isFalse()
|
||||
val block = model.uiState.value as EarnBlockUM.Content
|
||||
assertThat(block.titleUM.iconUM?.tone).isEqualTo(EarnBlockUM.TitleUM.IconTone.Info)
|
||||
assertThat(block.trailingUM).isEqualTo(
|
||||
EarnBlockUM.TrailingUM.StatusIcon(tone = EarnBlockUM.TrailingUM.StatusIcon.Tone.Info),
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
|
|||
|
|
@ -54,9 +54,7 @@ internal class YieldSupplyToEarnBlockConverterTest {
|
|||
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.trailingUM).isEqualTo(EarnBlockUM.TrailingUM.Chevron)
|
||||
assertThat(earnBlock.onClick).isNotNull()
|
||||
earnBlock.onClick?.invoke()
|
||||
assertThat(clicked).isTrue()
|
||||
|
|
@ -71,7 +69,9 @@ internal class YieldSupplyToEarnBlockConverterTest {
|
|||
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()
|
||||
assertThat(earnBlock.trailingUM).isEqualTo(
|
||||
EarnBlockUM.TrailingUM.Loader(tone = EarnBlockUM.TrailingUM.Loader.LoaderTone.Positive),
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
@ -82,12 +82,19 @@ internal class YieldSupplyToEarnBlockConverterTest {
|
|||
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()
|
||||
assertThat(earnBlock.iconUM).isEqualTo(
|
||||
EarnBlockUM.IconUM.Glowing(
|
||||
iconRes = com.tangem.core.ui.R.drawable.ic_yield_40,
|
||||
tone = EarnBlockUM.IconUM.Tone.Warning,
|
||||
),
|
||||
)
|
||||
assertThat(earnBlock.trailingUM).isEqualTo(
|
||||
EarnBlockUM.TrailingUM.Loader(tone = EarnBlockUM.TrailingUM.Loader.LoaderTone.Muted),
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `GIVEN Content with showWarningIcon WHEN convert THEN title Warning Icon`() {
|
||||
fun `GIVEN Content with showWarningIcon WHEN convert THEN trailing Warning StatusIcon`() {
|
||||
val content = YieldSupplyUM.Content(
|
||||
apy = "5.1",
|
||||
title = stringReference("Yield Mode"),
|
||||
|
|
@ -102,13 +109,13 @@ internal class YieldSupplyToEarnBlockConverterTest {
|
|||
|
||||
assertThat(result).isInstanceOf(EarnBlockUM.Content::class.java)
|
||||
val earnBlock = result as EarnBlockUM.Content
|
||||
assertThat(earnBlock.titleUM.iconUM).isNotNull()
|
||||
assertThat(earnBlock.titleUM.iconUM?.tone).isEqualTo(EarnBlockUM.TitleUM.IconTone.Warning)
|
||||
assertThat(earnBlock.trailingUM).isInstanceOf(EarnBlockUM.TrailingUM.Button::class.java)
|
||||
assertThat(earnBlock.trailingUM).isEqualTo(
|
||||
EarnBlockUM.TrailingUM.StatusIcon(tone = EarnBlockUM.TrailingUM.StatusIcon.Tone.Warning),
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `GIVEN Content with showInfoIcon WHEN convert THEN title Info Icon`() {
|
||||
fun `GIVEN Content with showInfoIcon WHEN convert THEN trailing Info StatusIcon`() {
|
||||
val content = YieldSupplyUM.Content(
|
||||
apy = "5.1",
|
||||
title = stringReference("Yield Mode"),
|
||||
|
|
@ -123,9 +130,9 @@ internal class YieldSupplyToEarnBlockConverterTest {
|
|||
|
||||
assertThat(result).isInstanceOf(EarnBlockUM.Content::class.java)
|
||||
val earnBlock = result as EarnBlockUM.Content
|
||||
assertThat(earnBlock.titleUM.iconUM).isNotNull()
|
||||
assertThat(earnBlock.titleUM.iconUM?.tone).isEqualTo(EarnBlockUM.TitleUM.IconTone.Info)
|
||||
assertThat(earnBlock.trailingUM).isInstanceOf(EarnBlockUM.TrailingUM.Button::class.java)
|
||||
assertThat(earnBlock.trailingUM).isEqualTo(
|
||||
EarnBlockUM.TrailingUM.StatusIcon(tone = EarnBlockUM.TrailingUM.StatusIcon.Tone.Info),
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
@ -143,8 +150,9 @@ internal class YieldSupplyToEarnBlockConverterTest {
|
|||
val result = converter.convert(content)
|
||||
|
||||
val earnBlock = result as EarnBlockUM.Content
|
||||
assertThat(earnBlock.titleUM.iconUM).isNotNull()
|
||||
assertThat(earnBlock.titleUM.iconUM?.tone).isEqualTo(EarnBlockUM.TitleUM.IconTone.Warning)
|
||||
assertThat(earnBlock.trailingUM).isEqualTo(
|
||||
EarnBlockUM.TrailingUM.StatusIcon(tone = EarnBlockUM.TrailingUM.StatusIcon.Tone.Warning),
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue