15
15
import com .onesignal .ShadowDynamicTimer ;
16
16
import com .onesignal .ShadowJobService ;
17
17
import com .onesignal .ShadowNotificationManagerCompat ;
18
- import com .onesignal .ShadowOSInAppMessageController ;
19
18
import com .onesignal .ShadowOSUtils ;
20
19
import com .onesignal .ShadowOSViewUtils ;
21
20
import com .onesignal .ShadowOSWebView ;
53
52
import static com .test .onesignal .TestHelpers .threadAndTaskWait ;
54
53
import static junit .framework .Assert .assertEquals ;
55
54
import static junit .framework .Assert .assertFalse ;
55
+ import static junit .framework .Assert .assertTrue ;
56
56
57
57
@ Config (packageName = "com.onesignal.example" ,
58
58
instrumentedPackages = { "com.onesignal" },
66
66
ShadowNotificationManagerCompat .class ,
67
67
ShadowJobService .class ,
68
68
ShadowDynamicTimer .class ,
69
- ShadowOSInAppMessageController .class ,
70
69
ShadowOSWebView .class ,
71
70
ShadowOSViewUtils .class
72
71
},
@@ -134,7 +133,10 @@ public void testDisableInAppMessagingPreventsMessageDisplay() throws Exception {
134
133
// We will set the trigger. However, since messaging is disabled, the message should not be shown
135
134
OneSignal .addTrigger ("test_key" , 3 );
136
135
137
- assertEquals (0 , ShadowOSInAppMessageController .displayedMessages .size ());
136
+ // Make sure 1 IAM is in the display queue
137
+ assertEquals (1 , OneSignalPackagePrivateHelper .getInAppMessageDisplayQueue ().size ());
138
+ // Make sure no IAM is showing
139
+ assertFalse (OneSignalPackagePrivateHelper .isInAppMessageShowing ());
138
140
}
139
141
140
142
/**
@@ -151,16 +153,28 @@ public void testMultipleMessagesDoNotBothDisplay() throws Exception {
151
153
}});
152
154
threadAndTaskWait ();
153
155
154
- //both messages should now be valid but only one should display
155
- //which one displays first is undefined and doesn't really matter
156
- assertEquals (1 , ShadowOSInAppMessageController .displayedMessages .size ());
156
+ // Make sure 2 items are in the display queue
157
+ assertEquals (2 , OneSignalPackagePrivateHelper .getInAppMessageDisplayQueue ().size ());
158
+ // Make sure an IAM is showing
159
+ assertTrue (OneSignalPackagePrivateHelper .isInAppMessageShowing ());
157
160
158
- // dismiss the message
161
+ // Dismiss the message
159
162
OneSignalPackagePrivateHelper .dismissCurrentMessage ();
160
163
threadAndTaskWait ();
161
164
162
- // the second in app message should now be displayed
163
- assertEquals (2 , ShadowOSInAppMessageController .displayedMessages .size ());
165
+ // Make sure 1 item is in the display queue
166
+ assertEquals (1 , OneSignalPackagePrivateHelper .getInAppMessageDisplayQueue ().size ());
167
+ // Make sure an IAM is showing
168
+ assertTrue (OneSignalPackagePrivateHelper .isInAppMessageShowing ());
169
+
170
+ // Dismiss the message
171
+ OneSignalPackagePrivateHelper .dismissCurrentMessage ();
172
+ threadAndTaskWait ();
173
+
174
+ // Make sure no items are in the display queue
175
+ assertEquals (0 , OneSignalPackagePrivateHelper .getInAppMessageDisplayQueue ().size ());
176
+ // Make sure no IAM is showing
177
+ assertFalse (OneSignalPackagePrivateHelper .isInAppMessageShowing ());
164
178
}
165
179
166
180
// This tests both rotating the device or the app being resumed.
@@ -175,8 +189,9 @@ public void testMessageDismissingWhileDeviceIsRotating() throws Exception {
175
189
}});
176
190
threadAndTaskWait ();
177
191
178
- // 2. Assert one IAM was displayed
179
- assertEquals (1 , ShadowOSInAppMessageController .displayedMessages .size ());
192
+ // 2. Assert two IAM in the queue and 1 is showing
193
+ assertEquals (2 , OneSignalPackagePrivateHelper .getInAppMessageDisplayQueue ().size ());
194
+ assertTrue (OneSignalPackagePrivateHelper .isInAppMessageShowing ());
180
195
181
196
// 3. Rotate device - This will kick off a JS task to get the new height
182
197
blankActivityController .pause ();
@@ -189,6 +204,10 @@ public void testMessageDismissingWhileDeviceIsRotating() throws Exception {
189
204
// 5. Now fire resize event which was scheduled in step 3.
190
205
// Test that this does not throw and handles this missing IAM view.
191
206
ShadowOSWebView .fireEvalJSCallbacks ();
207
+
208
+ // 6. Make sure only 1 IAM ios left in queue now and it is showing
209
+ assertEquals (1 , OneSignalPackagePrivateHelper .getInAppMessageDisplayQueue ().size ());
210
+ assertTrue (OneSignalPackagePrivateHelper .isInAppMessageShowing ());
192
211
}
193
212
194
213
@@ -233,7 +252,7 @@ public void testTimedMessageIsDisplayed() throws Exception {
233
252
.until (new Callable <Boolean >() {
234
253
@ Override
235
254
public Boolean call () throws Exception {
236
- return ShadowOSInAppMessageController . displayedMessages .size () == 1 ;
255
+ return OneSignalPackagePrivateHelper . getInAppMessageDisplayQueue () .size () == 1 ;
237
256
}
238
257
});
239
258
}
@@ -276,8 +295,8 @@ public void testAfterLastInAppTimeIsDisplayed() throws Exception {
276
295
.untilAsserted (new ThrowingRunnable () {
277
296
@ Override
278
297
public void run () {
279
- assertEquals (1 , ShadowOSInAppMessageController . displayedMessages .size ());
280
- assertEquals (message1 .messageId , ShadowOSInAppMessageController . displayedMessages . get ( 0 ));
298
+ assertEquals (1 , OneSignalPackagePrivateHelper . getInAppMessageDisplayQueue () .size ());
299
+ assertEquals (message1 .messageId , OneSignalPackagePrivateHelper . getShowingInAppMessageId ( ));
281
300
}
282
301
});
283
302
@@ -290,8 +309,8 @@ public void run() {
290
309
.untilAsserted (new ThrowingRunnable () {
291
310
@ Override
292
311
public void run () {
293
- assertEquals (2 , ShadowOSInAppMessageController . displayedMessages .size ());
294
- assertEquals (message2 .messageId , ShadowOSInAppMessageController . displayedMessages . get ( 1 ));
312
+ assertEquals (1 , OneSignalPackagePrivateHelper . getInAppMessageDisplayQueue () .size ());
313
+ assertEquals (message2 .messageId , OneSignalPackagePrivateHelper . getShowingInAppMessageId ( ));
295
314
}
296
315
});
297
316
}
@@ -324,20 +343,20 @@ public void testTimedMessageDisplayedAfterAllTriggersValid() throws Exception {
324
343
325
344
// no timer should be scheduled since 'test_key' != 'squirrel'
326
345
assertFalse (ShadowDynamicTimer .hasScheduledTimer );
327
- assertEquals (0 , ShadowOSInAppMessageController . displayedMessages .size ());
346
+ assertEquals (0 , OneSignalPackagePrivateHelper . getInAppMessageDisplayQueue () .size ());
328
347
329
348
// since we are not actually waiting on any logic to finish, sleeping here is fine
330
349
Thread .sleep (20 );
331
350
332
351
// the message still should not be displayed
333
- assertEquals (0 , ShadowOSInAppMessageController . displayedMessages .size ());
352
+ assertEquals (0 , OneSignalPackagePrivateHelper . getInAppMessageDisplayQueue () .size ());
334
353
335
354
// after setting this trigger the message should be displayed immediately
336
355
OneSignal .addTrigger ("test_key" , "squirrel" );
337
356
threadAndTaskWait ();
338
357
339
358
// the message should now have been displayed
340
- assertEquals (1 , ShadowOSInAppMessageController . displayedMessages .size ());
359
+ assertEquals (1 , OneSignalPackagePrivateHelper . getInAppMessageDisplayQueue () .size ());
341
360
assertFalse (ShadowDynamicTimer .hasScheduledTimer );
342
361
}
343
362
@@ -353,7 +372,7 @@ public void useCachedInAppListOnQuickColdRestart() throws Exception {
353
372
// Should used cached triggers since we won't be making an on_session call.
354
373
// Testing for this by trying to add a trigger that should display an IAM
355
374
OneSignal .addTrigger ("test_2" , 2 );
356
- assertEquals (1 , ShadowOSInAppMessageController . displayedMessages .size ());
375
+ assertEquals (1 , OneSignalPackagePrivateHelper . getInAppMessageDisplayQueue () .size ());
357
376
}
358
377
359
378
@ Test
@@ -374,7 +393,7 @@ public void useCachedInAppListOnQuickColdRestartWhenInitFromAppClass() throws Ex
374
393
// Should used cached triggers since we won't be making an on_session call.
375
394
// Testing for this by trying to add a trigger that should display an IAM
376
395
OneSignal .addTrigger ("test_2" , 2 );
377
- assertEquals (1 , ShadowOSInAppMessageController . displayedMessages .size ());
396
+ assertEquals (1 , OneSignalPackagePrivateHelper . getInAppMessageDisplayQueue () .size ());
378
397
}
379
398
380
399
@ Test
@@ -383,15 +402,15 @@ public void doNotReshowInAppIfDismissed_evenAfterColdRestart() throws Exception
383
402
initializeSdkWithMultiplePendingMessages ();
384
403
// 2. Trigger showing In App and dismiss it
385
404
OneSignal .addTrigger ("test_2" , 2 );
386
- assertEquals (1 , ShadowOSInAppMessageController . displayedMessages .size ());
405
+ assertEquals (1 , OneSignalPackagePrivateHelper . getInAppMessageDisplayQueue () .size ());
387
406
OneSignalPackagePrivateHelper .dismissCurrentMessage ();
388
407
// 3. Swipe away app
389
408
fastColdRestartApp ();
390
409
// 4. Cold Start app
391
410
initializeSdkWithMultiplePendingMessages ();
392
411
// 5. Set same trigger, should not display again
393
412
OneSignal .addTrigger ("test_2" , 2 );
394
- assertEquals (1 , ShadowOSInAppMessageController . displayedMessages .size ());
413
+ assertEquals (0 , OneSignalPackagePrivateHelper . getInAppMessageDisplayQueue () .size ());
395
414
}
396
415
397
416
@ Test
@@ -400,15 +419,15 @@ public void reshowInAppIfDisplayedButNeverDismissedAfterColdRestart() throws Exc
400
419
initializeSdkWithMultiplePendingMessages ();
401
420
// 2. Trigger showing In App
402
421
OneSignal .addTrigger ("test_2" , 2 );
403
- assertEquals (1 , ShadowOSInAppMessageController . displayedMessages .size ());
422
+ assertEquals (1 , OneSignalPackagePrivateHelper . getInAppMessageDisplayQueue () .size ());
404
423
// 3. Swipe away app
405
424
fastColdRestartApp ();
406
425
// 4. Cold Start app
407
426
initializeSdkWithMultiplePendingMessages ();
408
- assertEquals (1 , ShadowOSInAppMessageController . displayedMessages .size ());
427
+ assertEquals (0 , OneSignalPackagePrivateHelper . getInAppMessageDisplayQueue () .size ());
409
428
// 5. Set same trigger, should now display again, since it was never dismissed
410
429
OneSignal .addTrigger ("test_2" , 2 );
411
- assertEquals (2 , ShadowOSInAppMessageController . displayedMessages .size ());
430
+ assertEquals (1 , OneSignalPackagePrivateHelper . getInAppMessageDisplayQueue () .size ());
412
431
}
413
432
414
433
@ Test
@@ -560,7 +579,7 @@ public void testMessageNotShownForAndroidApi18Lower() throws Exception {
560
579
threadAndTaskWait ();
561
580
562
581
// Check no messages exist
563
- assertEquals (0 , ShadowOSInAppMessageController . displayedMessages .size ());
582
+ assertEquals (0 , OneSignalPackagePrivateHelper . getInAppMessageDisplayQueue () .size ());
564
583
}
565
584
566
585
private void setMockRegistrationResponseWithMessages (ArrayList <OSTestInAppMessage > messages ) throws JSONException {
0 commit comments