@@ -93,6 +93,9 @@ class SkipActionTests: XCTestCase {
9393 skipIfLargerEventRecordedWithinMS: nil ,
9494 neverTriggerBefore: shouldNotTriggerTime,
9595 skipIfLargerEventRecordedSinceIntervalStarted: false ,
96+ skipIfAlreadyTriggeredBefore: nil ,
97+ skipIfAlreadyTriggeredBetweenFromDate: nil ,
98+ skipIfAlreadyTriggeredBetweenToDate: nil ,
9699 activityName: activityName,
97100 callbackName: callbackName,
98101 eventName: eventName
@@ -105,6 +108,9 @@ class SkipActionTests: XCTestCase {
105108 skipIfLargerEventRecordedWithinMS: nil ,
106109 neverTriggerBefore: shouldTriggerTime,
107110 skipIfLargerEventRecordedSinceIntervalStarted: false ,
111+ skipIfAlreadyTriggeredBefore: nil ,
112+ skipIfAlreadyTriggeredBetweenFromDate: nil ,
113+ skipIfAlreadyTriggeredBetweenToDate: nil ,
108114 activityName: activityName,
109115 callbackName: callbackName,
110116 eventName: eventName
@@ -114,6 +120,117 @@ class SkipActionTests: XCTestCase {
114120 XCTAssertTrue ( shouldExecute)
115121 }
116122
123+ func testSkipIfAlreadyTriggeredBefore( ) {
124+ let activityName = " myActivityWithSkipIfAlreadyTriggeredBefore "
125+ let callbackName = " eventDidReachThreshold "
126+ let eventName = " 10 "
127+ let key = userDefaultKeyForEvent (
128+ activityName: activityName,
129+ callbackName: callbackName,
130+ eventName: eventName
131+ )
132+
133+ userDefaults? . set ( 1000 , forKey: key)
134+
135+ let shouldNotExecute = shouldExecuteAction (
136+ skipIfAlreadyTriggeredAfter: nil ,
137+ skipIfLargerEventRecordedAfter: nil ,
138+ skipIfAlreadyTriggeredWithinMS: nil ,
139+ skipIfLargerEventRecordedWithinMS: nil ,
140+ neverTriggerBefore: nil ,
141+ skipIfLargerEventRecordedSinceIntervalStarted: false ,
142+ skipIfAlreadyTriggeredBefore: 1001 ,
143+ skipIfAlreadyTriggeredBetweenFromDate: nil ,
144+ skipIfAlreadyTriggeredBetweenToDate: nil ,
145+ activityName: activityName,
146+ callbackName: callbackName,
147+ eventName: eventName
148+ )
149+
150+ let shouldExecute = shouldExecuteAction (
151+ skipIfAlreadyTriggeredAfter: nil ,
152+ skipIfLargerEventRecordedAfter: nil ,
153+ skipIfAlreadyTriggeredWithinMS: nil ,
154+ skipIfLargerEventRecordedWithinMS: nil ,
155+ neverTriggerBefore: nil ,
156+ skipIfLargerEventRecordedSinceIntervalStarted: false ,
157+ skipIfAlreadyTriggeredBefore: 1000 ,
158+ skipIfAlreadyTriggeredBetweenFromDate: nil ,
159+ skipIfAlreadyTriggeredBetweenToDate: nil ,
160+ activityName: activityName,
161+ callbackName: callbackName,
162+ eventName: eventName
163+ )
164+
165+ XCTAssertFalse ( shouldNotExecute)
166+ XCTAssertTrue ( shouldExecute)
167+ }
168+
169+ }
170+
171+ class MoreSkipActionTests : XCTestCase {
172+ func testShouldSkipIfAlreadyTriggeredBetween( ) {
173+ let activityName = " myActivityWithSkipIfAlreadyTriggeredBetween "
174+ let callbackName = " eventDidReachThreshold "
175+ let eventName = " 10 "
176+ let key = userDefaultKeyForEvent (
177+ activityName: activityName,
178+ callbackName: callbackName,
179+ eventName: eventName
180+ )
181+
182+ userDefaults? . set ( 1000 , forKey: key)
183+
184+ let shouldNotExecute = shouldExecuteAction (
185+ skipIfAlreadyTriggeredAfter: nil ,
186+ skipIfLargerEventRecordedAfter: nil ,
187+ skipIfAlreadyTriggeredWithinMS: nil ,
188+ skipIfLargerEventRecordedWithinMS: nil ,
189+ neverTriggerBefore: nil ,
190+ skipIfLargerEventRecordedSinceIntervalStarted: false ,
191+ skipIfAlreadyTriggeredBefore: nil ,
192+ skipIfAlreadyTriggeredBetweenFromDate: 500 ,
193+ skipIfAlreadyTriggeredBetweenToDate: 1500 ,
194+ activityName: activityName,
195+ callbackName: callbackName,
196+ eventName: eventName
197+ )
198+
199+ let shouldExecute = shouldExecuteAction (
200+ skipIfAlreadyTriggeredAfter: nil ,
201+ skipIfLargerEventRecordedAfter: nil ,
202+ skipIfAlreadyTriggeredWithinMS: nil ,
203+ skipIfLargerEventRecordedWithinMS: nil ,
204+ neverTriggerBefore: nil ,
205+ skipIfLargerEventRecordedSinceIntervalStarted: false ,
206+ skipIfAlreadyTriggeredBefore: nil ,
207+ skipIfAlreadyTriggeredBetweenFromDate: 1001 ,
208+ skipIfAlreadyTriggeredBetweenToDate: 1500 ,
209+ activityName: activityName,
210+ callbackName: callbackName,
211+ eventName: eventName
212+ )
213+
214+ let shouldAlsoExecute = shouldExecuteAction (
215+ skipIfAlreadyTriggeredAfter: nil ,
216+ skipIfLargerEventRecordedAfter: nil ,
217+ skipIfAlreadyTriggeredWithinMS: nil ,
218+ skipIfLargerEventRecordedWithinMS: nil ,
219+ neverTriggerBefore: nil ,
220+ skipIfLargerEventRecordedSinceIntervalStarted: false ,
221+ skipIfAlreadyTriggeredBefore: nil ,
222+ skipIfAlreadyTriggeredBetweenFromDate: 500 ,
223+ skipIfAlreadyTriggeredBetweenToDate: 999 ,
224+ activityName: activityName,
225+ callbackName: callbackName,
226+ eventName: eventName
227+ )
228+
229+ XCTAssertFalse ( shouldNotExecute)
230+ XCTAssertTrue ( shouldExecute)
231+ XCTAssertTrue ( shouldAlsoExecute)
232+ }
233+
117234 func testShouldSkipIfAlreadyTriggeredAfter( ) {
118235 let activityName = " myActivityWithSkipIfAlreadyTriggeredAfter "
119236 let callbackName = " eventDidReachThreshold "
@@ -133,6 +250,9 @@ class SkipActionTests: XCTestCase {
133250 skipIfLargerEventRecordedWithinMS: nil ,
134251 neverTriggerBefore: nil ,
135252 skipIfLargerEventRecordedSinceIntervalStarted: false ,
253+ skipIfAlreadyTriggeredBefore: nil ,
254+ skipIfAlreadyTriggeredBetweenFromDate: nil ,
255+ skipIfAlreadyTriggeredBetweenToDate: nil ,
136256 activityName: activityName,
137257 callbackName: callbackName,
138258 eventName: eventName
@@ -145,6 +265,9 @@ class SkipActionTests: XCTestCase {
145265 skipIfLargerEventRecordedWithinMS: nil ,
146266 neverTriggerBefore: nil ,
147267 skipIfLargerEventRecordedSinceIntervalStarted: false ,
268+ skipIfAlreadyTriggeredBefore: nil ,
269+ skipIfAlreadyTriggeredBetweenFromDate: nil ,
270+ skipIfAlreadyTriggeredBetweenToDate: nil ,
148271 activityName: activityName,
149272 callbackName: callbackName,
150273 eventName: eventName
@@ -175,6 +298,9 @@ class SkipActionTests: XCTestCase {
175298 skipIfLargerEventRecordedWithinMS: nil ,
176299 neverTriggerBefore: nil ,
177300 skipIfLargerEventRecordedSinceIntervalStarted: false ,
301+ skipIfAlreadyTriggeredBefore: nil ,
302+ skipIfAlreadyTriggeredBetweenFromDate: nil ,
303+ skipIfAlreadyTriggeredBetweenToDate: nil ,
178304 activityName: activityName,
179305 callbackName: callbackName,
180306 eventName: eventName
@@ -187,6 +313,9 @@ class SkipActionTests: XCTestCase {
187313 skipIfLargerEventRecordedWithinMS: nil ,
188314 neverTriggerBefore: nil ,
189315 skipIfLargerEventRecordedSinceIntervalStarted: false ,
316+ skipIfAlreadyTriggeredBefore: nil ,
317+ skipIfAlreadyTriggeredBetweenFromDate: nil ,
318+ skipIfAlreadyTriggeredBetweenToDate: nil ,
190319 activityName: activityName,
191320 callbackName: callbackName,
192321 eventName: eventName
@@ -218,6 +347,9 @@ class SkipActionTests: XCTestCase {
218347 skipIfLargerEventRecordedWithinMS: nil ,
219348 neverTriggerBefore: nil ,
220349 skipIfLargerEventRecordedSinceIntervalStarted: false ,
350+ skipIfAlreadyTriggeredBefore: nil ,
351+ skipIfAlreadyTriggeredBetweenFromDate: nil ,
352+ skipIfAlreadyTriggeredBetweenToDate: nil ,
221353 activityName: activityName,
222354 callbackName: callbackName,
223355 eventName: eventName
@@ -230,6 +362,9 @@ class SkipActionTests: XCTestCase {
230362 skipIfLargerEventRecordedWithinMS: nil ,
231363 neverTriggerBefore: nil ,
232364 skipIfLargerEventRecordedSinceIntervalStarted: false ,
365+ skipIfAlreadyTriggeredBefore: nil ,
366+ skipIfAlreadyTriggeredBetweenFromDate: nil ,
367+ skipIfAlreadyTriggeredBetweenToDate: nil ,
233368 activityName: activityName,
234369 callbackName: callbackName,
235370 eventName: eventName
@@ -263,6 +398,9 @@ class SkipActionTests: XCTestCase {
263398 skipIfLargerEventRecordedWithinMS: 100 ,
264399 neverTriggerBefore: nil ,
265400 skipIfLargerEventRecordedSinceIntervalStarted: false ,
401+ skipIfAlreadyTriggeredBefore: nil ,
402+ skipIfAlreadyTriggeredBetweenFromDate: nil ,
403+ skipIfAlreadyTriggeredBetweenToDate: nil ,
266404 activityName: activityName,
267405 callbackName: callbackName,
268406 eventName: eventName
@@ -275,6 +413,9 @@ class SkipActionTests: XCTestCase {
275413 skipIfLargerEventRecordedWithinMS: 10000 ,
276414 neverTriggerBefore: nil ,
277415 skipIfLargerEventRecordedSinceIntervalStarted: false ,
416+ skipIfAlreadyTriggeredBefore: nil ,
417+ skipIfAlreadyTriggeredBetweenFromDate: nil ,
418+ skipIfAlreadyTriggeredBetweenToDate: nil ,
278419 activityName: activityName,
279420 callbackName: callbackName,
280421 eventName: eventName
@@ -315,6 +456,9 @@ class SkipActionTests: XCTestCase {
315456 skipIfLargerEventRecordedWithinMS: nil ,
316457 neverTriggerBefore: nil ,
317458 skipIfLargerEventRecordedSinceIntervalStarted: true ,
459+ skipIfAlreadyTriggeredBefore: nil ,
460+ skipIfAlreadyTriggeredBetweenFromDate: nil ,
461+ skipIfAlreadyTriggeredBetweenToDate: nil ,
318462 activityName: activityName,
319463 callbackName: callbackName,
320464 eventName: " 15 "
@@ -327,6 +471,9 @@ class SkipActionTests: XCTestCase {
327471 skipIfLargerEventRecordedWithinMS: nil ,
328472 neverTriggerBefore: nil ,
329473 skipIfLargerEventRecordedSinceIntervalStarted: true ,
474+ skipIfAlreadyTriggeredBefore: nil ,
475+ skipIfAlreadyTriggeredBetweenFromDate: nil ,
476+ skipIfAlreadyTriggeredBetweenToDate: nil ,
330477 activityName: activityName,
331478 callbackName: callbackName,
332479 eventName: " 5 "
0 commit comments