Skip to content

Commit 3ad3602

Browse files
author
cfarrugia
committed
iluwatar#113 Event Driven Architecture
Adds unit test to assert and verify pattern behaviour
1 parent e1c0731 commit 3ad3602

4 files changed

Lines changed: 61 additions & 2 deletions

File tree

event-driven-architecture/pom.xml

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,11 @@
1818
<artifactId>junit</artifactId>
1919
<scope>test</scope>
2020
</dependency>
21-
</dependencies>
2221

22+
<dependency>
23+
<groupId>org.mockito</groupId>
24+
<artifactId>mockito-core</artifactId>
25+
<scope>test</scope>
26+
</dependency>
27+
</dependencies>
2328
</project>

event-driven-architecture/src/main/java/com/iluwatar/eda/EventDispatcher.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,4 +39,12 @@ public void registerChannel(Class<? extends Event> contentType,
3939
public void dispatch(Event content) {
4040
handlers.get(content.getClass()).dispatch(content);
4141
}
42+
43+
/**
44+
* Returns a map of registered event handlers.
45+
* @return {@Map} of registered event handlers.
46+
*/
47+
public Map<Class<? extends Event>, Channel<?>> getHandlers() {
48+
return handlers;
49+
}
4250
}

event-driven-architecture/src/main/java/com/iluwatar/eda/event/UserCreatedEvent.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ public UserCreatedEvent(User user) {
1515
this.user = user;
1616
}
1717

18-
1918
public User getUser() {
2019
return user;
2120
}
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
import com.iluwatar.eda.EventDispatcher;
2+
import com.iluwatar.eda.event.UserCreatedEvent;
3+
import com.iluwatar.eda.event.UserUpdatedEvent;
4+
import com.iluwatar.eda.handler.UserCreatedEventHandler;
5+
import com.iluwatar.eda.handler.UserUpdatedEventHandler;
6+
import com.iluwatar.eda.model.User;
7+
8+
import org.junit.Test;
9+
10+
11+
import static org.mockito.Mockito.spy;
12+
import static org.mockito.Mockito.verify;
13+
14+
import static org.junit.Assert.assertEquals;
15+
16+
public class EventDrivenTest {
17+
18+
@Test
19+
public void testEventDriverPattern(){
20+
21+
EventDispatcher dispatcher = spy(new EventDispatcher());
22+
UserCreatedEventHandler userCreatedEventHandler = new UserCreatedEventHandler();
23+
UserUpdatedEventHandler userUpdatedEventHandler = new UserUpdatedEventHandler();
24+
dispatcher.registerChannel(UserCreatedEvent.class, userCreatedEventHandler);
25+
dispatcher.registerChannel(UserUpdatedEvent.class, userUpdatedEventHandler);
26+
27+
assertEquals("Two handlers must be registered", 2, dispatcher.getHandlers().size());
28+
assertEquals("UserCreatedEvent must return the UserCreatedEventHandler",
29+
userCreatedEventHandler,
30+
(UserCreatedEventHandler)dispatcher.getHandlers().get(UserCreatedEvent.class));
31+
assertEquals("UserUpdatedEvent must be registered to the UserUpdatedEventHandler",
32+
userUpdatedEventHandler,
33+
(UserUpdatedEventHandler)dispatcher.getHandlers().get(UserUpdatedEvent.class));
34+
35+
User user = new User("iluwatar");
36+
37+
UserCreatedEvent userCreatedEvent = new UserCreatedEvent(user);
38+
UserUpdatedEvent userUpdatedEvent = new UserUpdatedEvent(user);
39+
dispatcher.dispatch(userCreatedEvent);
40+
dispatcher.dispatch(userUpdatedEvent);
41+
42+
//verify that the events have been dispatched
43+
verify(dispatcher).dispatch(userCreatedEvent);
44+
verify(dispatcher).dispatch(userUpdatedEvent);
45+
46+
}
47+
}

0 commit comments

Comments
 (0)