package gov.samhsa.consent2share.domain;
import static org.junit.Assert.*;
import java.lang.reflect.Field;
import org.junit.Test;
public class DomainEventServiceImplTest {
@Test
public void testRegisterAndRaise() throws Throwable {
// Arrange
DomainEventServiceImpl sut = new DomainEventServiceImpl();
final String whatHappened = "Our team won!";
AbstractDomainEventHandler<OccuredEvent> domainEventHandler = new AbstractDomainEventHandler<DomainEventServiceImplTest.OccuredEvent>() {
private String receivedWhatHappened;
@Override
public void handle(OccuredEvent event) {
receivedWhatHappened = event.getWhatHappened();
}
@Override
protected Class<OccuredEvent> getEventClass() {
return OccuredEvent.class;
}
};
OccuredEvent occuredEvent = new OccuredEvent(whatHappened);
// Act
sut.register(domainEventHandler);
sut.raise(occuredEvent);
// Assert
Field f = domainEventHandler.getClass().getDeclaredField(
"receivedWhatHappened");
f.setAccessible(true);
String receivedWhatHappened = (String) (f.get(domainEventHandler));
assertEquals(whatHappened, receivedWhatHappened);
}
private class OccuredEvent implements DomainEvent {
private String whatHappened;
public OccuredEvent(String whatHappened) {
this.whatHappened = whatHappened;
}
public String getWhatHappened() {
return whatHappened;
}
}
}