@Test default void callingAllUnregisterMethodShouldUnregisterTheListener() throws Exception { MailboxListener listener = newListener(); Registration registration = eventBus().register(listener, KEY_1); eventBus().register(listener, KEY_1).unregister(); registration.unregister(); eventBus().dispatch(EVENT, ImmutableSet.of(KEY_1)).block(); verify(listener, after(FIVE_HUNDRED_MS.toMillis()).never()) .event(any()); }
@Test default void unregisteredDistantListenersShouldNotBeNotified() throws Exception { MailboxListener mailboxListener = newListener(); eventBus().register(mailboxListener, KEY_1).unregister(); eventBus2().dispatch(EVENT, ImmutableSet.of(KEY_1)).block(); verify(mailboxListener, after(FIVE_HUNDRED_MS.toMillis()).never()) .event(any()); }
@Test default void dispatchShouldNotNotifyUnregisteredListener() throws Exception { MailboxListener listener = newListener(); eventBus().register(listener, KEY_1).unregister(); eventBus().dispatch(EVENT, ImmutableSet.of(KEY_1)).block(); verify(listener, after(FIVE_HUNDRED_MS.toMillis()).never()) .event(any()); }
@Test default void unregisteredGroupListenerShouldNotReceiveEvents() throws Exception { MailboxListener listener = newListener(); Registration registration = eventBus().register(listener, GROUP_A); registration.unregister(); eventBus().dispatch(EVENT, NO_KEYS).block(); verify(listener, after(FIVE_HUNDRED_MS.toMillis()).never()) .event(any()); }
@Test default void unregisterShouldStopNotificationForDistantGroups() throws Exception { MailboxListener mailboxListener = newListener(); eventBus().register(mailboxListener, GROUP_A).unregister(); eventBus2().dispatch(EVENT, NO_KEYS).block(); verify(mailboxListener, after(FIVE_HUNDRED_MS.toMillis()).never()) .event(any()); }
@Test default void unregisterShouldRemoveDoubleRegisteredListener() throws Exception { MailboxListener listener = newListener(); eventBus().register(listener, KEY_1); eventBus().register(listener, KEY_1).unregister(); eventBus().dispatch(EVENT, ImmutableSet.of(KEY_1)).block(); verify(listener, after(FIVE_HUNDRED_MS.toMillis()).never()) .event(any()); }
@Test default void unregisterShouldHaveNotNotifyWhenCalledOnDifferentKeys() throws Exception { MailboxListener listener = newListener(); eventBus().register(listener, KEY_1); eventBus().register(listener, KEY_2).unregister(); eventBus().dispatch(EVENT, ImmutableSet.of(KEY_1)).block(); verify(listener, timeout(ONE_SECOND.toMillis()).times(1)).event(any()); }
@Test default void registerShouldAcceptAlreadyUnregisteredGroups() throws Exception { MailboxListener listener = newListener(); eventBus().register(listener, GROUP_A).unregister(); eventBus().register(listener, GROUP_A); eventBus().dispatch(EVENT, NO_KEYS).block(); verify(listener, timeout(ONE_SECOND.toMillis()).times(1)).event(any()); }
@Test default void unregisterShouldBeIdempotentForKeyRegistrations() { MailboxListener listener = newListener(); Registration registration = eventBus().register(listener, KEY_1); registration.unregister(); assertThatCode(registration::unregister) .doesNotThrowAnyException(); }
@Test default void unregisterShouldBeIdempotentForGroups() { MailboxListener listener = newListener(); Registration registration = eventBus().register(listener, GROUP_A); registration.unregister(); assertThatCode(registration::unregister) .doesNotThrowAnyException(); }
@Test default void registerShouldNotThrowOnAnUnregisteredGroup() { MailboxListener listener = newListener(); MailboxListener listener2 = newListener(); eventBus().register(listener, GROUP_A).unregister(); assertThatCode(() -> eventBus().register(listener2, GROUP_A)) .doesNotThrowAnyException(); }