Skip to content

Commit

Permalink
Test all Rx types can be subscribed to twice
Browse files Browse the repository at this point in the history
  • Loading branch information
JakeWharton committed Sep 28, 2018
1 parent 61dc1be commit 0de0ada
Show file tree
Hide file tree
Showing 8 changed files with 121 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -71,4 +71,19 @@ interface Service {
service.completable().unsafeSubscribe(subscriber);
subscriber.assertError(IOException.class);
}

@Test public void subscribeTwice() {
server.enqueue(new MockResponse().setBody("Hi"));
server.enqueue(new MockResponse().setBody("Hey"));

Completable observable = service.completable();

RecordingSubscriber<String> subscriber1 = subscriberRule.create();
observable.subscribe(subscriber1);
subscriber1.assertCompleted();

RecordingSubscriber<String> subscriber2 = subscriberRule.create();
observable.subscribe(subscriber2);
subscriber2.assertCompleted();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -191,4 +191,19 @@ public void call(Response<String> response) {
subscriber.requestMore(Long.MAX_VALUE); // Subsequent requests do not trigger HTTP requests.
assertThat(server.getRequestCount()).isEqualTo(1);
}

@Test public void subscribeTwice() {
server.enqueue(new MockResponse().setBody("Hi"));
server.enqueue(new MockResponse().setBody("Hey"));

Observable<String> observable = service.body();

RecordingSubscriber<String> subscriber1 = subscriberRule.create();
observable.subscribe(subscriber1);
subscriber1.assertValue("Hi").assertCompleted();

RecordingSubscriber<String> subscriber2 = subscriberRule.create();
observable.subscribe(subscriber2);
subscriber2.assertValue("Hey").assertCompleted();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -171,4 +171,19 @@ interface Service {

subscriber.assertError(e);
}

@Test public void subscribeTwice() {
server.enqueue(new MockResponse().setBody("Hi"));
server.enqueue(new MockResponse().setBody("Hey"));

Single<String> observable = service.body();

RecordingSubscriber<String> subscriber1 = subscriberRule.create();
observable.subscribe(subscriber1);
subscriber1.assertValue("Hi").assertCompleted();

RecordingSubscriber<String> subscriber2 = subscriberRule.create();
observable.subscribe(subscriber2);
subscriber2.assertValue("Hey").assertCompleted();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -70,4 +70,19 @@ interface Service {
service.completable().subscribe(observer);
observer.assertError(IOException.class);
}

@Test public void subscribeTwice() {
server.enqueue(new MockResponse().setBody("Hi"));
server.enqueue(new MockResponse().setBody("Hey"));

Completable observable = service.completable();

RecordingCompletableObserver observer1 = observerRule.create();
observable.subscribe(observer1);
observer1.assertComplete();

RecordingCompletableObserver observer2 = observerRule.create();
observable.subscribe(observer2);
observer2.assertComplete();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -184,4 +184,19 @@ interface Service {
subscriber.request(Long.MAX_VALUE); // Subsequent requests do not trigger HTTP or notifications.
assertThat(server.getRequestCount()).isEqualTo(1);
}

@Test public void subscribeTwice() {
server.enqueue(new MockResponse().setBody("Hi"));
server.enqueue(new MockResponse().setBody("Hey"));

Flowable<String> observable = service.body();

RecordingSubscriber<Object> subscriber1 = subscriberRule.create();
observable.subscribe(subscriber1);
subscriber1.assertValue("Hi").assertComplete();

RecordingSubscriber<Object> subscriber2 = subscriberRule.create();
observable.subscribe(subscriber2);
subscriber2.assertValue("Hey").assertComplete();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
package retrofit2.adapter.rxjava2;

import io.reactivex.Maybe;
import java.io.IOException;
import okhttp3.mockwebserver.MockResponse;
import okhttp3.mockwebserver.MockWebServer;
import org.junit.Before;
Expand All @@ -25,8 +26,6 @@
import retrofit2.Retrofit;
import retrofit2.http.GET;

import java.io.IOException;

import static okhttp3.mockwebserver.SocketPolicy.DISCONNECT_AFTER_REQUEST;
import static org.assertj.core.api.Assertions.assertThat;

Expand Down Expand Up @@ -130,4 +129,19 @@ interface Service {
assertThat(result.isError()).isTrue();
assertThat(result.error()).isInstanceOf(IOException.class);
}

@Test public void subscribeTwice() {
server.enqueue(new MockResponse().setBody("Hi"));
server.enqueue(new MockResponse().setBody("Hey"));

Maybe<String> observable = service.body();

RecordingMaybeObserver<Object> observer1 = observerRule.create();
observable.subscribe(observer1);
observer1.assertValue("Hi");

RecordingMaybeObserver<Object> observer2 = observerRule.create();
observable.subscribe(observer2);
observer2.assertValue("Hey");
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -149,4 +149,19 @@ interface Service {
RxJavaPlugins.reset();
}
}

@Test public void subscribeTwice() {
server.enqueue(new MockResponse().setBody("Hi"));
server.enqueue(new MockResponse().setBody("Hey"));

Observable<String> observable = service.body();

RecordingObserver<String> observer1 = observerRule.create();
observable.subscribe(observer1);
observer1.assertValue("Hi").assertComplete();

RecordingObserver<String> observer2 = observerRule.create();
observable.subscribe(observer2);
observer2.assertValue("Hey").assertComplete();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -129,4 +129,19 @@ interface Service {
assertThat(result.isError()).isTrue();
assertThat(result.error()).isInstanceOf(IOException.class);
}

@Test public void subscribeTwice() {
server.enqueue(new MockResponse().setBody("Hi"));
server.enqueue(new MockResponse().setBody("Hey"));

Single<String> observable = service.body();

RecordingSingleObserver<Object> observer1 = observerRule.create();
observable.subscribe(observer1);
observer1.assertValue("Hi");

RecordingSingleObserver<Object> observer2 = observerRule.create();
observable.subscribe(observer2);
observer2.assertValue("Hey");
}
}

0 comments on commit 0de0ada

Please sign in to comment.