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( DualApplePods.LidState.CLOSED -> CasePopUpDecision(
shouldShow = false, shouldShow = false,
shouldHide = true, shouldHide = true,
shouldResetCooldown = true, shouldResetCooldown = false,
reason = "Lid CLOSED, resetting cooldown", reason = "Lid CLOSED, refreshing cooldown",
) )
else -> CasePopUpDecision( else -> CasePopUpDecision(
@@ -36,10 +36,11 @@ class PopUpReactionLogicTest : BaseTest() {
private fun evaluate( private fun evaluate(
currentLidState: DualApplePods.LidState?, currentLidState: DualApplePods.LidState?,
lastShownTime: Instant? = null, lastShownTime: Instant? = null,
at: Instant = now,
) = popUpReaction.evaluateCasePopUp( ) = popUpReaction.evaluateCasePopUp(
currentLidState = currentLidState, currentLidState = currentLidState,
lastShownTime = lastShownTime, lastShownTime = lastShownTime,
now = now, now = at,
cooldownDuration = cooldown, cooldownDuration = cooldown,
) )
@@ -81,11 +82,39 @@ class PopUpReactionLogicTest : BaseTest() {
} }
@Test @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) val decision = evaluate(currentLidState = DualApplePods.LidState.CLOSED)
decision.shouldShow shouldBe false decision.shouldShow shouldBe false
decision.shouldHide shouldBe true 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 @Test