@Test public void shouldReportEffectClassCollisionWhenAddingSubclass() throws Exception { RxMobius.SubtypeEffectHandlerBuilder<TestEffect, TestEvent> builder = RxMobius.<TestEffect, TestEvent>subtypeEffectHandler() .addTransformer(Parent.class, observable -> null); thrown.expect(IllegalArgumentException.class); thrown.expectMessage("collision"); builder.addTransformer(Child.class, observable -> null); }
@Test public void shouldReportEffectClassCollisionWhenAddingSuperclass() throws Exception { RxMobius.SubtypeEffectHandlerBuilder<TestEffect, TestEvent> builder = RxMobius.<TestEffect, TestEvent>subtypeEffectHandler() .addTransformer(Child.class, childObservable -> null); thrown.expect(IllegalArgumentException.class); thrown.expectMessage("collision"); builder.addTransformer(Parent.class, parentObservable -> null); }
RxMobius.<TestEffect, TestEvent>subtypeEffectHandler() .addFunction( A.class,
@Test public void effectHandlersShouldBeImmutable() throws Exception { // redo some test setup for test case specific conditions publishSubject = PublishSubject.create(); testSubscriber = TestSubscriber.create(); RxMobius.SubtypeEffectHandlerBuilder<TestEffect, TestEvent> builder = RxMobius.<TestEffect, TestEvent>subtypeEffectHandler() .addTransformer(A.class, (Observable<A> as) -> as.map(a -> AEvent.create(a.id()))); Transformer<TestEffect, TestEvent> router = builder.build(); // this should not lead to the effects router being capable of handling B effects builder.addTransformer(B.class, (Observable<B> bs) -> bs.map(b -> BEvent.create(b.id()))); publishSubject.compose(router).subscribe(testSubscriber); B effect = B.create(84); publishSubject.onNext(effect); publishSubject.onCompleted(); testSubscriber.awaitTerminalEvent(3, TimeUnit.SECONDS); testSubscriber.assertError(new UnknownEffectException(effect)); }
@Before public void setUp() throws Exception { cConsumer = new TestConsumer<>(); dAction = new TestAction(); Transformer<TestEffect, TestEvent> router = RxMobius.<TestEffect, TestEvent>subtypeEffectHandler() .addTransformer(A.class, (Observable<A> as) -> as.map(a -> AEvent.create(a.id()))) .addTransformer(B.class, (Observable<B> bs) -> bs.map(b -> BEvent.create(b.id()))) .addConsumer(C.class, cConsumer) .addAction(D.class, dAction) .addFunction(E.class, e -> AEvent.create(e.id())) .build(); publishSubject = PublishSubject.create(); testSubscriber = TestSubscriber.create(); publishSubject.compose(router).subscribe(testSubscriber); }