package com.path.android.jobqueue.test.jobmanager; import com.path.android.jobqueue.JobHolder; import com.path.android.jobqueue.JobManager; import com.path.android.jobqueue.Params; import com.path.android.jobqueue.config.Configuration; import com.path.android.jobqueue.test.jobs.DummyJob; import org.fest.reflect.method.Invoker; import org.hamcrest.MatcherAssert; import org.junit.Test; import org.junit.runner.RunWith; import org.robolectric.*; import static org.hamcrest.CoreMatchers.equalTo; import static org.hamcrest.CoreMatchers.notNullValue; import static org.hamcrest.CoreMatchers.nullValue; @RunWith(RobolectricTestRunner.class) public class NetworkNextJobTest extends JobManagerTestBase { @Test public void testNetworkNextJob() throws Exception { DummyNetworkUtil dummyNetworkUtil = new DummyNetworkUtil(); JobManager jobManager = createJobManager(new Configuration.Builder(Robolectric.application).networkUtil(dummyNetworkUtil)); jobManager.stop(); DummyJob dummyJob = new DummyJob(new Params(0).requireNetwork()); long dummyJobId = jobManager.addJob(dummyJob); dummyNetworkUtil.setHasNetwork(false); Invoker<JobHolder> nextJobMethod = getNextJobMethod(jobManager); MatcherAssert.assertThat("when there isn't any network, next job should return null", nextJobMethod.invoke(), nullValue()); MatcherAssert.assertThat("even if there is network, job manager should return correct count", jobManager.count(), equalTo(1)); dummyNetworkUtil.setHasNetwork(true); JobHolder retrieved = nextJobMethod.invoke(); MatcherAssert.assertThat("when network is recovered, next job should be retrieved", retrieved, notNullValue()); } }