defineManagedBean(CheckWithMoneyPayment.class);
defineManagedBean(PaymentProcessorComponent.class);
AbstractOwbBean<ComponentWithObserves2> component = defineManagedBean(ComponentWithObserves2.class);
WebBeansContext.getInstance().getContextFactory().initRequestContext(null);
LoggedInEvent event = new LoggedInEvent("USER");
class RoleUser extends AnnotationLiteral<Role> implements Role
{
@Override
public String value()
{
return "USER";
}
}
class RoleAdmin extends AnnotationLiteral<Role> implements Role
{
@Override
public String value()
{
return "ADMIN";
}
}
ComponentWithObserves2.hasBeenIntercepted = false;
Annotation[] anns = new Annotation[1];
anns[0] = new RoleUser();
getManager().fireEvent(event, anns);
ComponentWithObserves2 instance = getManager().getInstance(component);
Assert.assertFalse(ComponentWithObserves2.hasBeenIntercepted);
Assert.assertNotNull(instance.getPayment());
Assert.assertEquals("USER", instance.getUser());
anns[0] = new RoleAdmin();
event = new LoggedInEvent("ADMIN");
getManager().fireEvent(event, anns);
instance = getManager().getInstance(component);
Assert.assertTrue(ComponentWithObserves2.hasBeenIntercepted);