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