aboutsummaryrefslogtreecommitdiff
path: root/work/workmanager/src/androidTest/java/androidx/work/impl/WorkerWrapperTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'work/workmanager/src/androidTest/java/androidx/work/impl/WorkerWrapperTest.java')
-rw-r--r--work/workmanager/src/androidTest/java/androidx/work/impl/WorkerWrapperTest.java44
1 files changed, 37 insertions, 7 deletions
diff --git a/work/workmanager/src/androidTest/java/androidx/work/impl/WorkerWrapperTest.java b/work/workmanager/src/androidTest/java/androidx/work/impl/WorkerWrapperTest.java
index 739fcf7b626..44e65f808f9 100644
--- a/work/workmanager/src/androidTest/java/androidx/work/impl/WorkerWrapperTest.java
+++ b/work/workmanager/src/androidTest/java/androidx/work/impl/WorkerWrapperTest.java
@@ -31,6 +31,7 @@ import static org.hamcrest.Matchers.arrayContaining;
import static org.hamcrest.Matchers.contains;
import static org.hamcrest.Matchers.containsInAnyOrder;
import static org.hamcrest.Matchers.greaterThan;
+import static org.mockito.Mockito.atLeast;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.times;
@@ -38,6 +39,7 @@ import static org.mockito.Mockito.verify;
import android.content.Context;
import android.net.Uri;
+import android.os.Build;
import android.support.test.InstrumentationRegistry;
import android.support.test.filters.LargeTest;
import android.support.test.filters.SmallTest;
@@ -507,6 +509,7 @@ public class WorkerWrapperTest extends DatabaseTest {
insertWork(periodicWork);
new WorkerWrapper.Builder(mContext, mConfiguration, mDatabase, periodicWorkId)
.withListener(mMockListener)
+ .withSchedulers(Collections.singletonList(mMockScheduler))
.build()
.run();
@@ -514,6 +517,15 @@ public class WorkerWrapperTest extends DatabaseTest {
verify(mMockListener).onExecuted(periodicWorkId, true, false);
assertThat(periodicWorkSpecAfterFirstRun.runAttemptCount, is(0));
assertThat(periodicWorkSpecAfterFirstRun.state, is(ENQUEUED));
+ // SystemAlarmScheduler needs to reschedule the same worker.
+ if (Build.VERSION.SDK_INT <= WorkManagerImpl.MAX_PRE_JOB_SCHEDULER_API_LEVEL) {
+ ArgumentCaptor<WorkSpec> captor = ArgumentCaptor.forClass(WorkSpec.class);
+ verify(mMockScheduler, atLeast(1))
+ .schedule(captor.capture());
+
+ WorkSpec workSpec = captor.getValue();
+ assertThat(workSpec.id, is(periodicWorkId));
+ }
}
@Test
@@ -563,16 +575,34 @@ public class WorkerWrapperTest extends DatabaseTest {
@Test
@SmallTest
public void testScheduler() {
- OneTimeWorkRequest work = new OneTimeWorkRequest.Builder(TestWorker.class).build();
- insertWork(work);
- Scheduler mockScheduler = mock(Scheduler.class);
+ OneTimeWorkRequest prerequisiteWork =
+ new OneTimeWorkRequest.Builder(TestWorker.class).build();
+ OneTimeWorkRequest work = new OneTimeWorkRequest.Builder(TestWorker.class)
+ .setInitialState(BLOCKED).build();
+ Dependency dependency = new Dependency(work.getStringId(), prerequisiteWork.getStringId());
- new WorkerWrapper.Builder(mContext, mConfiguration, mDatabase, work.getStringId())
- .withSchedulers(Collections.singletonList(mockScheduler))
+ mDatabase.beginTransaction();
+ try {
+ insertWork(prerequisiteWork);
+ insertWork(work);
+ mDependencyDao.insertDependency(dependency);
+ mDatabase.setTransactionSuccessful();
+ } finally {
+ mDatabase.endTransaction();
+ }
+
+ new WorkerWrapper.Builder(
+ mContext,
+ mConfiguration,
+ mDatabase,
+ prerequisiteWork.getStringId())
+ .withSchedulers(Collections.singletonList(mMockScheduler))
.build()
.run();
- verify(mockScheduler).schedule();
+ ArgumentCaptor<WorkSpec> captor = ArgumentCaptor.forClass(WorkSpec.class);
+ verify(mMockScheduler).schedule(captor.capture());
+ assertThat(captor.getValue().id, is(work.getStringId()));
}
@Test
@@ -603,7 +633,7 @@ public class WorkerWrapperTest extends DatabaseTest {
new Extras(input, Collections.<String>emptyList(), null, 1));
assertThat(worker, is(notNullValue()));
- assertThat(worker.getInputData().getString(key, null), is(expectedValue));
+ assertThat(worker.getInputData().getString(key), is(expectedValue));
work = new OneTimeWorkRequest.Builder(TestWorker.class).build();
worker = WorkerWrapper.workerFromWorkSpec(