From b6b6d937efabb2019371308fa226e24f7445c8b1 Mon Sep 17 00:00:00 2001 From: jordifierro Date: Mon, 11 Apr 2016 12:34:30 +0200 Subject: [PATCH 1/3] Fix UseCaseTest --- .../sample/domain/interactor/UseCaseTest.java | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/domain/src/test/java/com/fernandocejas/android10/sample/domain/interactor/UseCaseTest.java b/domain/src/test/java/com/fernandocejas/android10/sample/domain/interactor/UseCaseTest.java index e8d20444..a53a8163 100644 --- a/domain/src/test/java/com/fernandocejas/android10/sample/domain/interactor/UseCaseTest.java +++ b/domain/src/test/java/com/fernandocejas/android10/sample/domain/interactor/UseCaseTest.java @@ -26,6 +26,8 @@ import rx.observers.TestSubscriber; import rx.schedulers.TestScheduler; +import java.util.Arrays; + import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.core.Is.is; import static org.mockito.BDDMockito.given; @@ -34,13 +36,12 @@ public class UseCaseTest { private UseCaseTestClass useCase; - @Mock private ThreadExecutor mockThreadExecutor; @Mock private PostExecutionThread mockPostExecutionThread; @Before public void setUp() { MockitoAnnotations.initMocks(this); - this.useCase = new UseCaseTestClass(mockThreadExecutor, mockPostExecutionThread); + this.useCase = new UseCaseTestClass(new DefaultThreadExecutor(), mockPostExecutionThread); } @Test @@ -51,8 +52,9 @@ public void testBuildUseCaseObservableReturnCorrectResult() { given(mockPostExecutionThread.getScheduler()).willReturn(testScheduler); useCase.execute(testSubscriber); + testScheduler.triggerActions(); - assertThat(testSubscriber.getOnNextEvents().size(), is(0)); + testSubscriber.assertReceivedOnNext(Arrays.asList(1, 2, 3)); } @Test @@ -74,11 +76,19 @@ protected UseCaseTestClass( } @Override protected Observable buildUseCaseObservable() { - return Observable.empty(); + return Observable.just(1, 2, 3); } @Override public void execute(Subscriber UseCaseSubscriber) { super.execute(UseCaseSubscriber); } } + + public class DefaultThreadExecutor implements ThreadExecutor { + + @Override + public void execute(Runnable command) { + command.run(); + } + } } \ No newline at end of file From 13de9cced939ee32f71b8a2970cff7c6d824ff8e Mon Sep 17 00:00:00 2001 From: jordifierro Date: Tue, 12 Apr 2016 12:38:42 +0200 Subject: [PATCH 2/3] Fix testSubscriptionWhenExecutingUseCase --- .../android10/sample/domain/interactor/UseCase.java | 8 ++++++++ .../android10/sample/domain/interactor/UseCaseTest.java | 7 +++++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/domain/src/main/java/com/fernandocejas/android10/sample/domain/interactor/UseCase.java b/domain/src/main/java/com/fernandocejas/android10/sample/domain/interactor/UseCase.java index 24e9d010..cc3a5ebe 100644 --- a/domain/src/main/java/com/fernandocejas/android10/sample/domain/interactor/UseCase.java +++ b/domain/src/main/java/com/fernandocejas/android10/sample/domain/interactor/UseCase.java @@ -71,4 +71,12 @@ public void unsubscribe() { subscription.unsubscribe(); } } + + /** + * Checks subscription status + * @return true if subscription.isUnsubscribed() + */ + public boolean isUnsubscribed(){ + return this.subscription.isUnsubscribed(); + } } diff --git a/domain/src/test/java/com/fernandocejas/android10/sample/domain/interactor/UseCaseTest.java b/domain/src/test/java/com/fernandocejas/android10/sample/domain/interactor/UseCaseTest.java index a53a8163..83bde586 100644 --- a/domain/src/test/java/com/fernandocejas/android10/sample/domain/interactor/UseCaseTest.java +++ b/domain/src/test/java/com/fernandocejas/android10/sample/domain/interactor/UseCaseTest.java @@ -60,11 +60,14 @@ public void testBuildUseCaseObservableReturnCorrectResult() { @Test public void testSubscriptionWhenExecutingUseCase() { TestSubscriber testSubscriber = new TestSubscriber<>(); + TestScheduler testScheduler = new TestScheduler(); + given(mockPostExecutionThread.getScheduler()).willReturn(testScheduler); useCase.execute(testSubscriber); - useCase.unsubscribe(); + assertThat(useCase.isUnsubscribed(), is(false)); - assertThat(testSubscriber.isUnsubscribed(), is(true)); + useCase.unsubscribe(); + assertThat(useCase.isUnsubscribed(), is(true)); } private static class UseCaseTestClass extends UseCase { From 3d6fe70072e887a71f4e5dc82cbce6bf937eb758 Mon Sep 17 00:00:00 2001 From: jordifierro Date: Wed, 27 Apr 2016 15:21:20 +0200 Subject: [PATCH 3/3] Modify UseCaseTest to work with a delayed Observable --- .../sample/domain/interactor/UseCaseTest.java | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/domain/src/test/java/com/fernandocejas/android10/sample/domain/interactor/UseCaseTest.java b/domain/src/test/java/com/fernandocejas/android10/sample/domain/interactor/UseCaseTest.java index 83bde586..8fbef3d4 100644 --- a/domain/src/test/java/com/fernandocejas/android10/sample/domain/interactor/UseCaseTest.java +++ b/domain/src/test/java/com/fernandocejas/android10/sample/domain/interactor/UseCaseTest.java @@ -17,16 +17,19 @@ import com.fernandocejas.android10.sample.domain.executor.PostExecutionThread; import com.fernandocejas.android10.sample.domain.executor.ThreadExecutor; + import org.junit.Before; import org.junit.Test; import org.mockito.Mock; import org.mockito.MockitoAnnotations; + +import java.util.Arrays; +import java.util.concurrent.TimeUnit; + import rx.Observable; import rx.Subscriber; import rx.observers.TestSubscriber; -import rx.schedulers.TestScheduler; - -import java.util.Arrays; +import rx.schedulers.Schedulers; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.core.Is.is; @@ -47,21 +50,19 @@ public void setUp() { @Test @SuppressWarnings("unchecked") public void testBuildUseCaseObservableReturnCorrectResult() { + given(mockPostExecutionThread.getScheduler()).willReturn(Schedulers.immediate()); TestSubscriber testSubscriber = new TestSubscriber<>(); - TestScheduler testScheduler = new TestScheduler(); - given(mockPostExecutionThread.getScheduler()).willReturn(testScheduler); useCase.execute(testSubscriber); - testScheduler.triggerActions(); + testSubscriber.awaitTerminalEvent(); testSubscriber.assertReceivedOnNext(Arrays.asList(1, 2, 3)); } @Test public void testSubscriptionWhenExecutingUseCase() { + given(mockPostExecutionThread.getScheduler()).willReturn(Schedulers.immediate()); TestSubscriber testSubscriber = new TestSubscriber<>(); - TestScheduler testScheduler = new TestScheduler(); - given(mockPostExecutionThread.getScheduler()).willReturn(testScheduler); useCase.execute(testSubscriber); assertThat(useCase.isUnsubscribed(), is(false)); @@ -79,7 +80,7 @@ protected UseCaseTestClass( } @Override protected Observable buildUseCaseObservable() { - return Observable.just(1, 2, 3); + return Observable.just(1, 2, 3).delay(10, TimeUnit.MILLISECONDS); } @Override public void execute(Subscriber UseCaseSubscriber) {