@Test
@SpecAssertions({
@SpecAssertion(section = OBSERVER_METHOD_CONFIGURATOR, id = "aa"),
@SpecAssertion(section = OBSERVER_METHOD_CONFIGURATOR, id = "ab"),
@SpecAssertion(section = OBSERVER_METHOD_CONFIGURATOR, id = "ac"),
@SpecAssertion(section = OBSERVER_METHOD_CONFIGURATOR, id = "ba"),
@SpecAssertion(section = OBSERVER_METHOD_CONFIGURATOR, id = "bb"),
@SpecAssertion(section = AFTER_BEAN_DISCOVERY, id = "ed") })
public void addNewObserverMethodFromReadingExistingOne() {
AfterBeanDiscoveryObserver.reset();
getCurrentManager().fireEvent(new Banana(), Any.Literal.INSTANCE, Ripe.RipeLiteral.INSTANCE);
getCurrentManager().fireEvent(new Melon(), Any.Literal.INSTANCE);
getCurrentManager().fireEvent(new Peach(), Any.Literal.INSTANCE);
Set<ObserverMethod<? super Peach>> peachEventObservers = getCurrentManager().resolveObserverMethods(new Peach(), Any.Literal.INSTANCE);
Set<ObserverMethod<? super Banana>> bananaEventObservers = getCurrentManager()
.resolveObserverMethods(new Banana(), Any.Literal.INSTANCE, Ripe.RipeLiteral.INSTANCE);
assertEquals(peachEventObservers.size(), 2);
assertEquals(bananaEventObservers.size(), 2);
assertTrue(AfterBeanDiscoveryObserver.newBananaObserverNotified.get());
assertTrue(AfterBeanDiscoveryObserver.newMelonObserverNotified.get());
assertTrue(AfterBeanDiscoveryObserver.newPeachObserverNotified.get());
assertTrue(FruitObserver.melonObserverNotified.get());
assertTrue(FruitObserver.peachObserverNotified.get());
assertTrue(FruitObserver.bananaObserverNotified.get());
}