/** * Attempts to schedule the provided Job, throwing an exception if it fails. * * @throws ScheduleFailedException */ public void mustSchedule(@NonNull Job job) { if (schedule(job) != SCHEDULE_RESULT_SUCCESS) { throw new ScheduleFailedException(); } }
@Test public void testSchedule_passThrough() throws Exception { final int[] possibleResults = { FirebaseJobDispatcher.SCHEDULE_RESULT_SUCCESS, FirebaseJobDispatcher.SCHEDULE_RESULT_NO_DRIVER_AVAILABLE, FirebaseJobDispatcher.SCHEDULE_RESULT_BAD_SERVICE, FirebaseJobDispatcher.SCHEDULE_RESULT_UNKNOWN_ERROR, FirebaseJobDispatcher.SCHEDULE_RESULT_UNSUPPORTED_TRIGGER }; for (int result : possibleResults) { when(driver.schedule(null)).thenReturn(result); assertEquals(result, dispatcher.schedule(null)); } verify(driver, times(possibleResults.length)).schedule(null); }
@Test public void testSchedule_unavailable() throws Exception { setDriverAvailability(false); assertEquals( FirebaseJobDispatcher.SCHEDULE_RESULT_NO_DRIVER_AVAILABLE, dispatcher.schedule(null)); verify(driver, never()).schedule(null); }
dispatcher.schedule(syncSunshineJob);
"Expected schedule() request to succeed", FirebaseJobDispatcher.SCHEDULE_RESULT_SUCCESS, dispatcher.schedule(job));
dispatcher.schedule(syncSunshineJob);
dispatcher.schedule(syncSunshineJob);
dispatcher.schedule(constraintReminderJob);
dispatcher.schedule(syncSunshineJob);
dispatcher.schedule(syncSunshineJob);
dispatcher.schedule(syncSunshineJob);
dispatcher.schedule(syncSunshineJob);
dispatcher.schedule(syncSunshineJob);
dispatcher.schedule(syncSunshineJob);
dispatcher.schedule(syncSunshineJob);
dispatcher.schedule(constraintReminderJob);
dispatcher.schedule(constraintReminderJob);
dispatcher.schedule(syncSunshineJob);
dispatcher.schedule(syncSunshineJob);
@Test public void testSchedule_failsWhenPlayServicesIsUnavailable() throws Exception { markBackendUnavailable(); mockPackageManagerInfo(); Job job = null; try { job = dispatcher .newJobBuilder() .setService(TestJobService.class) .setTag("foobar") .setConstraints(Constraint.DEVICE_CHARGING) .setTrigger(Trigger.executionWindow(0, 60)) .build(); } catch (ValidationEnforcer.ValidationException ve) { fail(TextUtils.join("\n", ve.getErrors())); } assertEquals( "Expected schedule() request to fail when backend is unavailable", FirebaseJobDispatcher.SCHEDULE_RESULT_NO_DRIVER_AVAILABLE, dispatcher.schedule(job)); }