Skip to content

Commit 2cce9ae

Browse files
mvanhornd4rken
authored andcommitted
fix: case-open popup re-appears after the case is closed
1 parent 4bab7c6 commit 2cce9ae

2 files changed

Lines changed: 34 additions & 5 deletions

File tree

app/src/main/java/eu/darken/capod/reaction/core/popup/PopUpReaction.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -290,8 +290,8 @@ class PopUpReaction @Inject constructor(
290290
DualApplePods.LidState.CLOSED -> CasePopUpDecision(
291291
shouldShow = false,
292292
shouldHide = true,
293-
shouldResetCooldown = true,
294-
reason = "Lid CLOSED, resetting cooldown",
293+
shouldResetCooldown = false,
294+
reason = "Lid CLOSED, refreshing cooldown",
295295
)
296296

297297
else -> CasePopUpDecision(

app/src/test/java/eu/darken/capod/reaction/core/popup/PopUpReactionLogicTest.kt

Lines changed: 32 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,10 +36,11 @@ class PopUpReactionLogicTest : BaseTest() {
3636
private fun evaluate(
3737
currentLidState: DualApplePods.LidState?,
3838
lastShownTime: Instant? = null,
39+
at: Instant = now,
3940
) = popUpReaction.evaluateCasePopUp(
4041
currentLidState = currentLidState,
4142
lastShownTime = lastShownTime,
42-
now = now,
43+
now = at,
4344
cooldownDuration = cooldown,
4445
)
4546

@@ -81,11 +82,39 @@ class PopUpReactionLogicTest : BaseTest() {
8182
}
8283

8384
@Test
84-
fun `lid CLOSED - should NOT show, should hide, should reset cooldown`() {
85+
fun `lid CLOSED - should NOT show, should hide, should NOT reset cooldown`() {
8586
val decision = evaluate(currentLidState = DualApplePods.LidState.CLOSED)
8687
decision.shouldShow shouldBe false
8788
decision.shouldHide shouldBe true
88-
decision.shouldResetCooldown shouldBe true
89+
decision.shouldResetCooldown shouldBe false
90+
}
91+
92+
@Test
93+
fun `lid CLOSED followed by residual OPEN within cooldown - should NOT show`() {
94+
val closeDecision = evaluate(currentLidState = DualApplePods.LidState.CLOSED)
95+
closeDecision.shouldHide shouldBe true
96+
closeDecision.shouldResetCooldown shouldBe false
97+
98+
val residualOpenDecision = evaluate(
99+
currentLidState = DualApplePods.LidState.OPEN,
100+
lastShownTime = now,
101+
at = now.plusMillis(500),
102+
)
103+
residualOpenDecision.shouldShow shouldBe false
104+
}
105+
106+
@Test
107+
fun `lid CLOSED then OPEN after cooldown elapsed - should show`() {
108+
val closeDecision = evaluate(currentLidState = DualApplePods.LidState.CLOSED)
109+
closeDecision.shouldHide shouldBe true
110+
closeDecision.shouldResetCooldown shouldBe false
111+
112+
val reopenDecision = evaluate(
113+
currentLidState = DualApplePods.LidState.OPEN,
114+
lastShownTime = now,
115+
at = now.plus(cooldown),
116+
)
117+
reopenDecision.shouldShow shouldBe true
89118
}
90119

91120
@Test

0 commit comments

Comments
 (0)