package com.kickstarter.libs.rx.transformers; import com.kickstarter.KSRobolectricTestCase; import org.junit.Test; import rx.Observable; import rx.observers.TestSubscriber; import rx.subjects.PublishSubject; public class NeverErrorTransformerTest extends KSRobolectricTestCase { @Test public void testNeverError_emitsSameValuesAsSource() { final Observable<Integer> source = Observable.just(1, 2, 3, 4); final Observable<Integer> result = source.compose(Transformers.neverError()); final TestSubscriber<Integer> resultTest = TestSubscriber.create(); result.subscribe(resultTest); resultTest.assertValues(1, 2, 3, 4); resultTest.assertCompleted(); } @Test public void testNeverError_emitsSameValuesAndSkipsError() { final Observable<Integer> errorsOnLast = Observable.just(1, 2, 3, 4) .flatMap(i -> i < 4 ? Observable.just(i) : Observable.error(new RuntimeException())); final Observable<Integer> result = errorsOnLast.compose(Transformers.neverError()); final TestSubscriber<Integer> resultTest = TestSubscriber.create(); result.subscribe(resultTest); resultTest.assertValues(1, 2, 3); resultTest.assertCompleted(); resultTest.assertNoErrors(); } @Test public void testNeverError_pipesErrorsToPublishSubject() { final RuntimeException exception = new RuntimeException(); final Observable<Integer> errorsOnLast = Observable.just(1, 2, 3, 4) .flatMap(i -> i < 4 ? Observable.just(i) : Observable.error(exception)); final PublishSubject<Throwable> error = PublishSubject.create(); final Observable<Integer> result = errorsOnLast.compose(Transformers.pipeErrorsTo(error)); final TestSubscriber<Throwable> errorTest = TestSubscriber.create(); error.subscribe(errorTest); final TestSubscriber<Integer> resultTest = TestSubscriber.create(); result.subscribe(resultTest); resultTest.assertValues(1, 2, 3); resultTest.assertCompleted(); resultTest.assertNoErrors(); errorTest.assertValues(exception); errorTest.assertNotCompleted(); errorTest.assertNoErrors(); } }