26
26
import static com .google .firebase .appdistribution .impl .ErrorMessages .NETWORK_ERROR ;
27
27
import static com .google .firebase .appdistribution .impl .ErrorMessages .RELEASE_NOT_FOUND_ERROR ;
28
28
import static com .google .firebase .appdistribution .impl .ErrorMessages .UPDATE_CANCELED ;
29
+ import static com .google .firebase .appdistribution .impl .TestUtils .awaitAsyncOperations ;
30
+ import static com .google .firebase .appdistribution .impl .TestUtils .awaitTask ;
31
+ import static com .google .firebase .appdistribution .impl .TestUtils .awaitTaskFailure ;
32
+ import static com .google .firebase .appdistribution .impl .TestUtils .awaitTermination ;
33
+ import static com .google .firebase .appdistribution .impl .TestUtils .mockForegroundActivity ;
29
34
import static org .junit .Assert .assertEquals ;
30
35
import static org .junit .Assert .assertFalse ;
31
36
import static org .junit .Assert .assertNull ;
@@ -181,7 +186,7 @@ public void setup() throws FirebaseAppDistributionException {
181
186
shadowPackageManager .installPackage (packageInfo );
182
187
183
188
activity = spy (Robolectric .buildActivity (TestActivity .class ).create ().get ());
184
- TestUtils . mockForegroundActivity (mockLifecycleNotifier , activity );
189
+ mockForegroundActivity (mockLifecycleNotifier , activity );
185
190
}
186
191
187
192
@ Test
@@ -194,7 +199,7 @@ public void checkForNewRelease_whenCheckForNewReleaseFails_throwsError() {
194
199
195
200
Task <AppDistributionRelease > task = firebaseAppDistribution .checkForNewRelease ();
196
201
197
- TestUtils . awaitTaskFailure (task , NETWORK_FAILURE , JSON_PARSING_ERROR );
202
+ awaitTaskFailure (task , NETWORK_FAILURE , JSON_PARSING_ERROR );
198
203
}
199
204
200
205
@ Test
@@ -203,7 +208,7 @@ public void checkForNewRelease_testerIsNotSignedIn_taskFails() {
203
208
204
209
Task <AppDistributionRelease > task = firebaseAppDistribution .checkForNewRelease ();
205
210
206
- TestUtils . awaitTaskFailure (task , AUTHENTICATION_FAILURE , "Tester is not signed in" );
211
+ awaitTaskFailure (task , AUTHENTICATION_FAILURE , "Tester is not signed in" );
207
212
}
208
213
209
214
@ Test
@@ -213,7 +218,7 @@ public void checkForNewRelease_whenCheckForNewReleaseSucceeds_returnsRelease()
213
218
when (mockNewReleaseFetcher .checkForNewRelease ()).thenReturn (Tasks .forResult (internalRelease ));
214
219
215
220
Task <AppDistributionRelease > task = firebaseAppDistribution .checkForNewRelease ();
216
- TestUtils . awaitTask (task );
221
+ awaitTask (task );
217
222
218
223
assertEquals (TEST_RELEASE_NEWER_AAB , task .getResult ());
219
224
assertEquals (internalRelease , firebaseAppDistribution .getCachedNewRelease ().getSnapshot ());
@@ -228,8 +233,8 @@ public void checkForNewRelease_authenticationFailure_signOutTester() throws Inte
228
233
229
234
Task <AppDistributionRelease > task = firebaseAppDistribution .checkForNewRelease ();
230
235
231
- TestUtils . awaitTaskFailure (task , AUTHENTICATION_FAILURE , "Test" );
232
- TestUtils . awaitTermination (testExecutor );
236
+ awaitTaskFailure (task , AUTHENTICATION_FAILURE , "Test" );
237
+ awaitTermination (testExecutor );
233
238
verify (mockSignInStorage , times (1 )).setSignInStatus (false );
234
239
}
235
240
@@ -239,7 +244,7 @@ public void updateApp_whenNotSignedIn_throwsError() {
239
244
240
245
UpdateTask updateTask = firebaseAppDistribution .updateApp ();
241
246
242
- TestUtils . awaitTaskFailure (updateTask , AUTHENTICATION_FAILURE , "Tester is not signed in" );
247
+ awaitTaskFailure (updateTask , AUTHENTICATION_FAILURE , "Tester is not signed in" );
243
248
}
244
249
245
250
@ Test
@@ -249,7 +254,7 @@ public void updateIfNewReleaseAvailable_whenNewAabReleaseAvailable_showsUpdateDi
249
254
.thenReturn (Tasks .forResult ((TEST_RELEASE_NEWER_AAB_INTERNAL )));
250
255
251
256
firebaseAppDistribution .updateIfNewReleaseAvailable ();
252
- TestUtils . awaitAsyncOperations (testExecutor );
257
+ awaitAsyncOperations (testExecutor );
253
258
254
259
AlertDialog dialog = assertAlertDialogShown ();
255
260
assertEquals (
@@ -269,7 +274,7 @@ public void updateIfNewReleaseAvailable_fromABackgroundThread_showsUpdateDialog(
269
274
270
275
ExecutorService executorService = Executors .newSingleThreadExecutor ();
271
276
executorService .submit (() -> firebaseAppDistribution .updateIfNewReleaseAvailable ());
272
- TestUtils . awaitAsyncOperations (executorService );
277
+ awaitAsyncOperations (executorService );
273
278
274
279
assertAlertDialogShown ();
275
280
}
@@ -283,7 +288,7 @@ public void updateIfNewReleaseAvailable_whenReleaseNotesEmpty_doesNotShowRelease
283
288
(TEST_RELEASE_NEWER_AAB_INTERNAL .toBuilder ().setReleaseNotes ("" ).build ())));
284
289
285
290
firebaseAppDistribution .updateIfNewReleaseAvailable ();
286
- TestUtils . awaitAsyncOperations (testExecutor );
291
+ awaitAsyncOperations (testExecutor );
287
292
288
293
AlertDialog dialog = assertAlertDialogShown ();
289
294
assertEquals (
@@ -302,7 +307,7 @@ public void updateIfNewReleaseAvailable_whenNoReleaseAvailable_updateDialogNotSh
302
307
303
308
List <UpdateProgress > progressEvents = new ArrayList <>();
304
309
task .addOnProgressListener (FirebaseExecutors .directExecutor (), progressEvents ::add );
305
- TestUtils . awaitTermination (testExecutor );
310
+ awaitTermination (testExecutor );
306
311
307
312
assertEquals (1 , progressEvents .size ());
308
313
assertEquals (UpdateStatus .NEW_RELEASE_NOT_AVAILABLE , progressEvents .get (0 ).getUpdateStatus ());
@@ -318,7 +323,7 @@ public void updateIfNewReleaseAvailable_whenActivityBackgrounded_updateDialogNot
318
323
319
324
List <UpdateProgress > progressEvents = new ArrayList <>();
320
325
task .addOnProgressListener (FirebaseExecutors .directExecutor (), progressEvents ::add );
321
- TestUtils . awaitTermination (testExecutor );
326
+ awaitTermination (testExecutor );
322
327
323
328
assertEquals (1 , progressEvents .size ());
324
329
assertEquals (UpdateStatus .NEW_RELEASE_NOT_AVAILABLE , progressEvents .get (0 ).getUpdateStatus ());
@@ -339,8 +344,7 @@ public void updateIfNewReleaseAvailable_whenSignInCancelled_checkForUpdateNotCal
339
344
AlertDialog signInDialog = assertAlertDialogShown ();
340
345
signInDialog .getButton (DialogInterface .BUTTON_POSITIVE ).performClick ();
341
346
342
- TestUtils .awaitTaskFailure (
343
- updateTask , AUTHENTICATION_CANCELED , ErrorMessages .AUTHENTICATION_CANCELED );
347
+ awaitTaskFailure (updateTask , AUTHENTICATION_CANCELED , ErrorMessages .AUTHENTICATION_CANCELED );
344
348
verify (mockTesterSignInManager , times (1 )).signInTester ();
345
349
verify (mockNewReleaseFetcher , never ()).checkForNewRelease ();
346
350
}
@@ -359,7 +363,7 @@ public void updateIfNewReleaseAvailable_whenSignInFailed_checkForUpdateNotCalled
359
363
AlertDialog signInDialog = assertAlertDialogShown ();
360
364
signInDialog .getButton (DialogInterface .BUTTON_POSITIVE ).performClick ();
361
365
362
- TestUtils . awaitTaskFailure (updateTask , AUTHENTICATION_FAILURE , AUTHENTICATION_ERROR );
366
+ awaitTaskFailure (updateTask , AUTHENTICATION_FAILURE , AUTHENTICATION_ERROR );
363
367
}
364
368
365
369
@ Test
@@ -369,12 +373,12 @@ public void updateIfNewReleaseAvailable_whenDialogDismissed_taskFails()
369
373
.thenReturn (Tasks .forResult (TEST_RELEASE_NEWER_AAB_INTERNAL ));
370
374
371
375
UpdateTask updateTask = firebaseAppDistribution .updateIfNewReleaseAvailable ();
372
- TestUtils . awaitAsyncOperations (testExecutor );
376
+ awaitAsyncOperations (testExecutor );
373
377
374
378
AlertDialog updateDialog = assertAlertDialogShown ();
375
379
updateDialog .getButton (AlertDialog .BUTTON_NEGATIVE ).performClick (); // dismiss dialog
376
380
377
- TestUtils . awaitTaskFailure (updateTask , INSTALLATION_CANCELED , UPDATE_CANCELED );
381
+ awaitTaskFailure (updateTask , INSTALLATION_CANCELED , UPDATE_CANCELED );
378
382
assertFalse (updateDialog .isShowing ());
379
383
}
380
384
@@ -387,15 +391,15 @@ public void updateIfNewReleaseAvailable_whenDialogCanceled_taskFails()
387
391
UpdateTask updateTask = firebaseAppDistribution .updateIfNewReleaseAvailable ();
388
392
389
393
// Task callbacks happen on the executor
390
- TestUtils . awaitTermination (testExecutor );
394
+ awaitTermination (testExecutor );
391
395
392
396
// Show update confirmation dialog happens on the UI thread
393
397
shadowOf (getMainLooper ()).idle ();
394
398
395
399
AlertDialog updateDialog = assertAlertDialogShown ();
396
400
updateDialog .onBackPressed (); // cancels the dialog
397
401
398
- TestUtils . awaitTaskFailure (updateTask , INSTALLATION_CANCELED , UPDATE_CANCELED );
402
+ awaitTaskFailure (updateTask , INSTALLATION_CANCELED , UPDATE_CANCELED );
399
403
assertFalse (updateDialog .isShowing ());
400
404
}
401
405
@@ -412,7 +416,7 @@ public void updateIfNewReleaseAvailable_whenCheckForUpdateFails_updateAppNotCall
412
416
List <UpdateProgress > progressEvents = new ArrayList <>();
413
417
updateTask .addOnProgressListener (FirebaseExecutors .directExecutor (), progressEvents ::add );
414
418
415
- TestUtils . awaitTaskFailure (updateTask , NETWORK_FAILURE , NETWORK_ERROR );
419
+ awaitTaskFailure (updateTask , NETWORK_FAILURE , NETWORK_ERROR );
416
420
assertEquals (1 , progressEvents .size ());
417
421
assertEquals (UpdateStatus .NEW_RELEASE_CHECK_FAILED , progressEvents .get (0 ).getUpdateStatus ());
418
422
verify (firebaseAppDistribution , never ()).updateApp ();
@@ -425,7 +429,7 @@ public void updateIfNewReleaseAvailable_whenTesterIsSignedIn_doesNotOpenDialog()
425
429
when (mockSignInStorage .getSignInStatus ()).thenReturn (true );
426
430
427
431
UpdateTask task = firebaseAppDistribution .updateIfNewReleaseAvailable ();
428
- TestUtils . awaitTask (task );
432
+ awaitTask (task );
429
433
430
434
assertNull (ShadowAlertDialog .getLatestAlertDialog ());
431
435
}
@@ -438,8 +442,7 @@ public void signInTester_whenDialogDismissed_taskFails() {
438
442
AlertDialog dialog = assertAlertDialogShown ();
439
443
dialog .getButton (AlertDialog .BUTTON_NEGATIVE ).performClick (); // dismiss dialog
440
444
441
- TestUtils .awaitTaskFailure (
442
- updateTask , AUTHENTICATION_CANCELED , ErrorMessages .AUTHENTICATION_CANCELED );
445
+ awaitTaskFailure (updateTask , AUTHENTICATION_CANCELED , ErrorMessages .AUTHENTICATION_CANCELED );
443
446
}
444
447
445
448
@ Test
@@ -450,8 +453,7 @@ public void updateIfNewReleaseAvailable_whenSignInDialogCanceled_taskFails() {
450
453
AlertDialog dialog = assertAlertDialogShown ();
451
454
dialog .onBackPressed (); // cancel dialog
452
455
453
- TestUtils .awaitTaskFailure (
454
- signInTask , AUTHENTICATION_CANCELED , ErrorMessages .AUTHENTICATION_CANCELED );
456
+ awaitTaskFailure (signInTask , AUTHENTICATION_CANCELED , ErrorMessages .AUTHENTICATION_CANCELED );
455
457
}
456
458
457
459
private AlertDialog assertAlertDialogShown () {
@@ -463,8 +465,9 @@ private AlertDialog assertAlertDialogShown() {
463
465
}
464
466
465
467
@ Test
466
- public void signOutTester_setsSignInStatusFalse () {
468
+ public void signOutTester_setsSignInStatusFalse () throws InterruptedException {
467
469
firebaseAppDistribution .signOutTester ();
470
+ awaitTermination (testExecutor );
468
471
verify (mockSignInStorage ).setSignInStatus (false );
469
472
}
470
473
@@ -486,12 +489,12 @@ public void updateIfNewReleaseAvailable_receiveProgressUpdateFromUpdateApp()
486
489
487
490
List <UpdateProgress > progressEvents = new ArrayList <>();
488
491
updateTask .addOnProgressListener (FirebaseExecutors .directExecutor (), progressEvents ::add );
489
- TestUtils . awaitAsyncOperations (testExecutor );
492
+ awaitAsyncOperations (testExecutor );
490
493
491
494
// Clicking the update button.
492
495
AlertDialog updateDialog = (AlertDialog ) ShadowAlertDialog .getLatestDialog ();
493
496
updateDialog .getButton (Dialog .BUTTON_POSITIVE ).performClick ();
494
- TestUtils . awaitAsyncOperations (testExecutor );
497
+ awaitAsyncOperations (testExecutor );
495
498
496
499
// Update flow
497
500
assertEquals (1 , progressEvents .size ());
@@ -506,7 +509,7 @@ public void updateIfNewReleaseAvailable_fromABackgroundThread_showsSignInDialog(
506
509
ExecutorService executorService = Executors .newSingleThreadExecutor ();
507
510
Future <UpdateTask > future =
508
511
executorService .submit (() -> firebaseAppDistribution .updateIfNewReleaseAvailable ());
509
- TestUtils . awaitAsyncOperations (executorService );
512
+ awaitAsyncOperations (executorService );
510
513
511
514
assertAlertDialogShown ();
512
515
assertFalse (((UpdateTask ) future .get ()).isComplete ());
@@ -536,7 +539,7 @@ public void updateIfNewReleaseAvailable_whenScreenRotates_updateDialogReappears(
536
539
when (activity .isChangingConfigurations ()).thenReturn (true );
537
540
538
541
UpdateTask updateTask = firebaseAppDistribution .updateIfNewReleaseAvailable ();
539
- TestUtils . awaitAsyncOperations (testExecutor );
542
+ awaitAsyncOperations (testExecutor );
540
543
541
544
// Mimic activity recreation due to a configuration change
542
545
firebaseAppDistribution .onActivityDestroyed (activity );
@@ -558,7 +561,7 @@ public void updateIfNewReleaseAvailable_whenScreenRotates_updateDialogReappears(
558
561
firebaseAppDistribution .onActivityPaused (activity );
559
562
firebaseAppDistribution .onActivityResumed (testActivity2 );
560
563
561
- TestUtils . awaitTaskFailure (
564
+ awaitTaskFailure (
562
565
updateTask , HOST_ACTIVITY_INTERRUPTED , ErrorMessages .HOST_ACTIVITY_INTERRUPTED );
563
566
}
564
567
@@ -571,13 +574,13 @@ public void updateIfNewReleaseAvailable_whenScreenRotates_updateDialogReappears(
571
574
when (mockNewReleaseFetcher .checkForNewRelease ()).thenReturn (Tasks .forResult (newRelease ));
572
575
573
576
UpdateTask updateTask = firebaseAppDistribution .updateIfNewReleaseAvailable ();
574
- TestUtils . awaitAsyncOperations (testExecutor );
577
+ awaitAsyncOperations (testExecutor );
575
578
576
579
// Mimic different activity getting resumed
577
580
firebaseAppDistribution .onActivityPaused (activity );
578
581
firebaseAppDistribution .onActivityResumed (testActivity2 );
579
582
580
- TestUtils . awaitTaskFailure (
583
+ awaitTaskFailure (
581
584
updateTask , HOST_ACTIVITY_INTERRUPTED , ErrorMessages .HOST_ACTIVITY_INTERRUPTED );
582
585
}
583
586
@@ -588,7 +591,7 @@ public void updateAppTask_whenNoReleaseAvailable_throwsError() {
588
591
589
592
UpdateTask updateTask = firebaseAppDistribution .updateApp ();
590
593
591
- TestUtils . awaitTaskFailure (updateTask , UPDATE_NOT_AVAILABLE , RELEASE_NOT_FOUND_ERROR );
594
+ awaitTaskFailure (updateTask , UPDATE_NOT_AVAILABLE , RELEASE_NOT_FOUND_ERROR );
592
595
}
593
596
594
597
@ Test
@@ -605,7 +608,7 @@ public void updateApp_withAabReleaseAvailable_returnsSameAabTask()
605
608
606
609
// Complete original task
607
610
updateTaskToReturn .setResult ();
608
- TestUtils . awaitTask (updateTask );
611
+ awaitTask (updateTask );
609
612
610
613
// Returned task is complete
611
614
assertTrue (updateTask .isSuccessful ());
@@ -625,7 +628,7 @@ public void updateApp_withApkReleaseAvailable_returnsSameApkTask()
625
628
626
629
// Complete original task
627
630
updateTaskToReturn .setResult ();
628
- TestUtils . awaitTask (updateTask );
631
+ awaitTask (updateTask );
629
632
630
633
// Returned task is complete
631
634
assertTrue (updateTask .isSuccessful ());
0 commit comments