Updated on 2026-08-14

This commit is contained in:
Tangem 2026-06-04 19:31:34 +04:00
parent 275433607d
commit fa55c16871
2 changed files with 29 additions and 3 deletions

View file

@ -1,6 +1,10 @@
package com.tangem.features.yield.supply.impl.active.model
import kotlinx.datetime.Instant
import kotlin.time.Duration.Companion.days
/** How long the awaiting-payout copy stays visible after the qualification period ends, before the block is hidden. */
private val AWAITING_PAYOUT_WINDOW = 14.days
/** What the boost block on the active screen should display, derived solely from the qualification end date. */
internal sealed interface BoostBlockState {
@ -11,12 +15,13 @@ internal sealed interface BoostBlockState {
/** Qualification period is over — show the awaiting-payout copy. */
data object AwaitingPayout : BoostBlockState
/** No qualification end date — show nothing. */
/** No qualification end date, or the awaiting-payout window has elapsed — show nothing. */
data object Hidden : BoostBlockState
}
internal fun resolveBoostBlockState(qualificationEndDate: Instant?, now: Instant): BoostBlockState = when {
qualificationEndDate == null -> BoostBlockState.Hidden
now >= qualificationEndDate + AWAITING_PAYOUT_WINDOW -> BoostBlockState.Hidden
now >= qualificationEndDate -> BoostBlockState.AwaitingPayout
else -> BoostBlockState.DaysLeft(days = (qualificationEndDate - now).inWholeDays.toInt())
}

View file

@ -43,12 +43,33 @@ internal class BoostBlockStateTest {
}
@Test
fun `GIVEN past qualificationEndDate WHEN resolve THEN AwaitingPayout`() {
fun `GIVEN qualificationEndDate passed within 14 days WHEN resolve THEN AwaitingPayout`() {
val result = resolveBoostBlockState(
qualificationEndDate = Instant.parse("2026-05-01T00:00:00Z"),
// 13d 23h 59m 59s ago — just inside the 14-day window
qualificationEndDate = Instant.parse("2026-05-14T00:00:01Z"),
now = now,
)
assertThat(result).isEqualTo(BoostBlockState.AwaitingPayout)
}
@Test
fun `GIVEN qualificationEndDate passed exactly 14 days ago WHEN resolve THEN Hidden`() {
val result = resolveBoostBlockState(
qualificationEndDate = Instant.parse("2026-05-14T00:00:00Z"),
now = now,
)
assertThat(result).isEqualTo(BoostBlockState.Hidden)
}
@Test
fun `GIVEN qualificationEndDate passed more than 14 days ago WHEN resolve THEN Hidden`() {
val result = resolveBoostBlockState(
qualificationEndDate = Instant.parse("2026-05-01T00:00:00Z"),
now = now,
)
assertThat(result).isEqualTo(BoostBlockState.Hidden)
}
}