@@ -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