fix: case-open popup re-appears after the case is closed

This commit is contained in:
Matt Van Horn
2026-06-08 08:05:50 +02:00
committed by Matthias Urhahn
parent 4bab7c61a9
commit 2cce9ae56c
2 changed files with 34 additions and 5 deletions
@@ -290,8 +290,8 @@ class PopUpReaction @Inject constructor(
DualApplePods.LidState.CLOSED -> CasePopUpDecision(
shouldShow = false,
shouldHide = true,
shouldResetCooldown = true,
reason = "Lid CLOSED, resetting cooldown",
shouldResetCooldown = false,
reason = "Lid CLOSED, refreshing cooldown",
)
else -> CasePopUpDecision(
@@ -36,10 +36,11 @@ class PopUpReactionLogicTest : BaseTest() {
private fun evaluate(
currentLidState: DualApplePods.LidState?,
lastShownTime: Instant? = null,
at: Instant = now,
) = popUpReaction.evaluateCasePopUp(
currentLidState = currentLidState,
lastShownTime = lastShownTime,
now = now,
now = at,
cooldownDuration = cooldown,
)
@@ -81,11 +82,39 @@ class PopUpReactionLogicTest : BaseTest() {
}
@Test
fun `lid CLOSED - should NOT show, should hide, should reset cooldown`() {
fun `lid CLOSED - should NOT show, should hide, should NOT reset cooldown`() {
val decision = evaluate(currentLidState = DualApplePods.LidState.CLOSED)
decision.shouldShow shouldBe false
decision.shouldHide shouldBe true
decision.shouldResetCooldown shouldBe true
decision.shouldResetCooldown shouldBe false
}
@Test
fun `lid CLOSED followed by residual OPEN within cooldown - should NOT show`() {
val closeDecision = evaluate(currentLidState = DualApplePods.LidState.CLOSED)
closeDecision.shouldHide shouldBe true
closeDecision.shouldResetCooldown shouldBe false
val residualOpenDecision = evaluate(
currentLidState = DualApplePods.LidState.OPEN,
lastShownTime = now,
at = now.plusMillis(500),
)
residualOpenDecision.shouldShow shouldBe false
}
@Test
fun `lid CLOSED then OPEN after cooldown elapsed - should show`() {
val closeDecision = evaluate(currentLidState = DualApplePods.LidState.CLOSED)
closeDecision.shouldHide shouldBe true
closeDecision.shouldResetCooldown shouldBe false
val reopenDecision = evaluate(
currentLidState = DualApplePods.LidState.OPEN,
lastShownTime = now,
at = now.plus(cooldown),
)
reopenDecision.shouldShow shouldBe true
}
@Test