package org.jooby.rx;
import org.jooby.Deferred;
import org.jooby.rx.Rx.DeferredSubscriber;
import org.jooby.test.MockUnit;
import org.junit.Test;
public class DeferredSubscriberTest {
@Test
public void newObject() throws Exception {
new MockUnit(Deferred.class)
.run(unit -> {
new Rx.DeferredSubscriber(unit.get(Deferred.class));
});
}
@Test
public void onComplete() throws Exception {
new MockUnit(Deferred.class)
.expect(unit -> {
Deferred deferred = unit.get(Deferred.class);
deferred.resolve((Object) null);
})
.run(unit -> {
DeferredSubscriber subscriber = new Rx.DeferredSubscriber(unit.get(Deferred.class));
subscriber.onCompleted();
// ignored
subscriber.onCompleted();
});
}
@Test
public void onError() throws Exception {
Throwable cause = new Throwable();
new MockUnit(Deferred.class)
.expect(unit -> {
Deferred deferred = unit.get(Deferred.class);
deferred.reject(cause);
})
.run(unit -> {
new Rx.DeferredSubscriber(unit.get(Deferred.class))
.onError(cause);
});
}
@Test
public void onNext() throws Exception {
Object value = new Object();
new MockUnit(Deferred.class)
.expect(unit -> {
Deferred deferred = unit.get(Deferred.class);
deferred.resolve(value);
})
.run(unit -> {
DeferredSubscriber subscriber = new Rx.DeferredSubscriber(unit.get(Deferred.class));
subscriber.onNext(value);
// ignored
subscriber.onNext(value);
// ignored
subscriber.onCompleted();
});
}
}