package org.dayatang.dddlib.event.api; import org.junit.Before; import org.junit.Test; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import java.util.ArrayList; import java.util.Date; import java.util.List; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; /** * Created by yyang on 15/9/11. */ public class SimpleEventBusTest { private SimpleEventBus instance; @Mock private EventStore eventStore; private EmployeeRetiredEventListener employeeRetiredEventListener = new EmployeeRetiredEventListener(); private PostCreatedEventListener postCreatedEventListener = new PostCreatedEventListener(); @Mock private EventListener eventListener3; @Before public void setUp() throws Exception { MockitoAnnotations.initMocks(this); instance = new SimpleEventBus(eventStore); } @Test public void test() throws Exception { EmployeeRetiredEvent employeeRetired = new EmployeeRetiredEvent(new Date(), 1); PostCreatedEvent postCreated = new PostCreatedEvent(new Date(), 2); instance.register(employeeRetiredEventListener, postCreatedEventListener); assertThat(employeeRetiredEventListener.getCount()).isEqualTo(0); assertThat(postCreatedEventListener.getCount()).isEqualTo(0); instance.post(employeeRetired); assertThat(employeeRetiredEventListener.getCount()).isEqualTo(1); assertThat(postCreatedEventListener.getCount()).isEqualTo(0); verify(eventStore, times(1)).store(employeeRetired); instance.post(postCreated); assertThat(employeeRetiredEventListener.getCount()).isEqualTo(1); assertThat(postCreatedEventListener.getCount()).isEqualTo(1); verify(eventStore, times(1)).store(postCreated); instance.unregister(employeeRetiredEventListener, postCreatedEventListener); instance.post(postCreated); instance.post(employeeRetired); assertThat(employeeRetiredEventListener.getCount()).isEqualTo(1); assertThat(postCreatedEventListener.getCount()).isEqualTo(1); verify(eventStore, times(2)).store(employeeRetired); verify(eventStore, times(2)).store(postCreated); } @Test public void createWithListeners() { List<EventListener> listeners = new ArrayList<EventListener>(); listeners.add(employeeRetiredEventListener); listeners.add(postCreatedEventListener); instance = new SimpleEventBus(eventStore, listeners); assertThat(instance.getListeners()).isEqualTo(listeners); } }