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);
+
+ }
+}