@Test public void testTransientExtras() { Bundle extras = new Bundle(); extras.putInt("key", 5); JobRequest.Builder builder = new JobRequest.Builder(TAG) .setExecutionWindow(TimeUnit.HOURS.toMillis(4), TimeUnit.HOURS.toMillis(5)) .setTransientExtras(extras); int jobId = builder.build().schedule(); Bundle bundle = TransientBundleHolder.getBundle(jobId); assertThat(bundle).isNotNull(); assertThat(bundle.getInt("key")).isEqualTo(5); mWorkManagerRule.getManager().cancel(jobId); assertThat(TransientBundleHolder.getBundle(jobId)).isNull(); jobId = builder.build().schedule(); mWorkManagerRule.runJob(JobProxyWorkManager.createTag(jobId)); assertThat(TransientBundleHolder.getBundle(jobId)).isNull(); }
@Test public void verifyAlarmNotCanceledForPeriodicAfterStart() throws Exception { assumeTrue(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP); JobConfig.forceApi(JobApi.V_21); Bundle extras = new Bundle(); extras.putString("key", "value"); int jobId = new JobRequest.Builder("tag") .setPeriodic(TimeUnit.DAYS.toMillis(1)) .setTransientExtras(extras) .build() .schedule(); assertThat(mJobManagerRule.getAllPendingJobsFromScheduler()).isNotNull().isNotEmpty(); JobRequest request = mJobManagerRule.getManager().getJobRequest(jobId); assertThat(request.isTransient()).isTrue(); final Intent intent = PlatformAlarmServiceExact.createIntent(context(), jobId, null); PendingIntent pendingIntent = PendingIntent.getService(context(), jobId, intent, PendingIntent.FLAG_NO_CREATE); assertThat(pendingIntent).isNotNull(); boolean started = TransientBundleCompat.startWithTransientBundle(context(), request); assertThat(started).isTrue(); pendingIntent = PendingIntent.getService(context(), jobId, intent, PendingIntent.FLAG_NO_CREATE); assertThat(pendingIntent).isNotNull(); }
@Test public void verifyTransientJobNotRescheduled() throws Exception { assertThat(manager().getAllJobRequests()).isEmpty(); Bundle bundle = new Bundle(); bundle.putString("key", "value"); ContentValues contentValues = new JobRequest.Builder("tag") .setExact(TimeUnit.HOURS.toMillis(1)) .setTransientExtras(bundle) .build() .toContentValues(); manager().getJobStorage().getDatabase() .insert(JobStorage.JOB_TABLE_NAME, null, contentValues); Set<JobRequest> requests = manager().getAllJobRequests(); assertThat(requests).isEmpty(); } }
@Test public void testStartNow() throws Exception { mJob = new TestJob(); new JobRequest.Builder("tag") .startNow() .setTransientExtras(createTransientBundle()) .build() .schedule(); mJob.verifyJob(3, TimeUnit.SECONDS); }