diff --git a/event-driven-architecture/pom.xml b/event-driven-architecture/pom.xml index 2c011759b..77504657f 100644 --- a/event-driven-architecture/pom.xml +++ b/event-driven-architecture/pom.xml @@ -18,6 +18,11 @@ junit test - + + org.mockito + mockito-core + test + + \ No newline at end of file diff --git a/event-driven-architecture/src/main/java/com/iluwatar/eda/EventDispatcher.java b/event-driven-architecture/src/main/java/com/iluwatar/eda/EventDispatcher.java index e52f9db46..89f8de71b 100644 --- a/event-driven-architecture/src/main/java/com/iluwatar/eda/EventDispatcher.java +++ b/event-driven-architecture/src/main/java/com/iluwatar/eda/EventDispatcher.java @@ -39,4 +39,12 @@ public class EventDispatcher implements DynamicRouter { public void dispatch(Event content) { handlers.get(content.getClass()).dispatch(content); } + + /** + * Returns a map of registered event handlers. + * @return {@Map} of registered event handlers. + */ + public Map, Channel> getHandlers() { + return handlers; + } } \ No newline at end of file diff --git a/event-driven-architecture/src/main/java/com/iluwatar/eda/event/UserCreatedEvent.java b/event-driven-architecture/src/main/java/com/iluwatar/eda/event/UserCreatedEvent.java index 3d6187b7e..da2e31c8a 100644 --- a/event-driven-architecture/src/main/java/com/iluwatar/eda/event/UserCreatedEvent.java +++ b/event-driven-architecture/src/main/java/com/iluwatar/eda/event/UserCreatedEvent.java @@ -15,7 +15,6 @@ public class UserCreatedEvent extends Event { this.user = user; } - public User getUser() { return user; } diff --git a/event-driven-architecture/src/test/java/EventDrivenTest.java b/event-driven-architecture/src/test/java/EventDrivenTest.java new file mode 100644 index 000000000..70579d557 --- /dev/null +++ b/event-driven-architecture/src/test/java/EventDrivenTest.java @@ -0,0 +1,47 @@ +import com.iluwatar.eda.EventDispatcher; +import com.iluwatar.eda.event.UserCreatedEvent; +import com.iluwatar.eda.event.UserUpdatedEvent; +import com.iluwatar.eda.handler.UserCreatedEventHandler; +import com.iluwatar.eda.handler.UserUpdatedEventHandler; +import com.iluwatar.eda.model.User; + +import org.junit.Test; + + +import static org.mockito.Mockito.spy; +import static org.mockito.Mockito.verify; + +import static org.junit.Assert.assertEquals; + +public class EventDrivenTest { + + @Test + public void testEventDriverPattern(){ + + EventDispatcher dispatcher = spy(new EventDispatcher()); + UserCreatedEventHandler userCreatedEventHandler = new UserCreatedEventHandler(); + UserUpdatedEventHandler userUpdatedEventHandler = new UserUpdatedEventHandler(); + dispatcher.registerChannel(UserCreatedEvent.class, userCreatedEventHandler); + dispatcher.registerChannel(UserUpdatedEvent.class, userUpdatedEventHandler); + + assertEquals("Two handlers must be registered", 2, dispatcher.getHandlers().size()); + assertEquals("UserCreatedEvent must return the UserCreatedEventHandler", + userCreatedEventHandler, + (UserCreatedEventHandler)dispatcher.getHandlers().get(UserCreatedEvent.class)); + assertEquals("UserUpdatedEvent must be registered to the UserUpdatedEventHandler", + userUpdatedEventHandler, + (UserUpdatedEventHandler)dispatcher.getHandlers().get(UserUpdatedEvent.class)); + + User user = new User("iluwatar"); + + UserCreatedEvent userCreatedEvent = new UserCreatedEvent(user); + UserUpdatedEvent userUpdatedEvent = new UserUpdatedEvent(user); + dispatcher.dispatch(userCreatedEvent); + dispatcher.dispatch(userUpdatedEvent); + + //verify that the events have been dispatched + verify(dispatcher).dispatch(userCreatedEvent); + verify(dispatcher).dispatch(userUpdatedEvent); + + } +}