@Test(expected = UnableToUnsubscribeFromEventException.class) public void unableToUnsubscribeFromEvent() { context.checking( new Expectations() { { oneOf(pushChannelServiceAsync) .unsubscribe(with(subscriber), with(event.TYPE), with(any(AsyncCallback.class))); will(asyncAction); oneOf(timer).scheduleAction(with(any(Integer.class)), with(timerAction)); } }); pushChannel.unsubscribe(event.TYPE, unsubscribeCallback); asyncAction.onFailure(new RuntimeException()); context.checking( new Expectations() { { oneOf(pushChannelServiceAsync) .unsubscribe(with(subscriber), with(event.TYPE), with(any(AsyncCallback.class))); will(asyncAction); never(timer); } }); timerAction.getValue().execute(); asyncAction.onFailure(null); assertThat(unsubscribeCallback.timesCalled, is(0)); }
@Test public void unsubscribeFromEvent() { context.checking( new Expectations() { { oneOf(pushChannelServiceAsync) .unsubscribe(with(subscriber), with(event.TYPE), with(any(AsyncCallback.class))); will(asyncAction); } }); pushChannel.unsubscribe(event.TYPE, unsubscribeCallback); asyncAction.onSuccess(null); assertThat(unsubscribeCallback.timesCalled, is(1)); }
@Test public void subscriberWithoutSubscriptionsIsNotKeptAlive() { context.checking( new Expectations() { { oneOf(pushChannelServiceAsync) .subscribe(with(subscriber), with(event.TYPE), with(any(AsyncCallback.class))); will(asyncAction); } }); pushChannel.subscribe(event.TYPE, subscribeCallback); asyncAction.onSuccess(null); context.checking( new Expectations() { { oneOf(pushChannelServiceAsync) .unsubscribe(with(subscriber), with(event.TYPE), with(any(AsyncCallback.class))); will(asyncAction); } }); pushChannel.unsubscribe(event.TYPE, unsubscribeCallback); asyncAction.onSuccess(null); context.checking( new Expectations() { { never(timer); never(pushChannelServiceAsync); } }); pushChannel.onTime(); }