Search in sources :

Example 1 with Content

use of com.iluwatar.flux.action.Content in project java-design-patterns by iluwatar.

the class DispatcherTest method testMenuItemSelected.

@Test
public void testMenuItemSelected() throws Exception {
    final Dispatcher dispatcher = Dispatcher.getInstance();
    final Store store = mock(Store.class);
    dispatcher.registerStore(store);
    dispatcher.menuItemSelected(MenuItem.HOME);
    dispatcher.menuItemSelected(MenuItem.COMPANY);
    // We expect 4 events, 2 menu selections and 2 content change actions
    final ArgumentCaptor<Action> actionCaptor = ArgumentCaptor.forClass(Action.class);
    verify(store, times(4)).onAction(actionCaptor.capture());
    verifyNoMoreInteractions(store);
    final List<Action> actions = actionCaptor.getAllValues();
    final List<MenuAction> menuActions = actions.stream().filter(a -> a.getType().equals(ActionType.MENU_ITEM_SELECTED)).map(a -> (MenuAction) a).collect(Collectors.toList());
    final List<ContentAction> contentActions = actions.stream().filter(a -> a.getType().equals(ActionType.CONTENT_CHANGED)).map(a -> (ContentAction) a).collect(Collectors.toList());
    assertEquals(2, menuActions.size());
    assertEquals(1, menuActions.stream().map(MenuAction::getMenuItem).filter(MenuItem.HOME::equals).count());
    assertEquals(1, menuActions.stream().map(MenuAction::getMenuItem).filter(MenuItem.COMPANY::equals).count());
    assertEquals(2, contentActions.size());
    assertEquals(1, contentActions.stream().map(ContentAction::getContent).filter(Content.PRODUCTS::equals).count());
    assertEquals(1, contentActions.stream().map(ContentAction::getContent).filter(Content.COMPANY::equals).count());
}
Also used : MenuAction(com.iluwatar.flux.action.MenuAction) MenuItem(com.iluwatar.flux.action.MenuItem) Assert.assertNotNull(org.junit.Assert.assertNotNull) Test(org.junit.Test) Mockito.times(org.mockito.Mockito.times) Field(java.lang.reflect.Field) Constructor(java.lang.reflect.Constructor) Collectors(java.util.stream.Collectors) Content(com.iluwatar.flux.action.Content) Mockito.verify(org.mockito.Mockito.verify) Assert.assertSame(org.junit.Assert.assertSame) List(java.util.List) ArgumentCaptor(org.mockito.ArgumentCaptor) Mockito.verifyNoMoreInteractions(org.mockito.Mockito.verifyNoMoreInteractions) ActionType(com.iluwatar.flux.action.ActionType) Store(com.iluwatar.flux.store.Store) ContentAction(com.iluwatar.flux.action.ContentAction) Action(com.iluwatar.flux.action.Action) Assert.assertEquals(org.junit.Assert.assertEquals) Before(org.junit.Before) Mockito.mock(org.mockito.Mockito.mock) MenuAction(com.iluwatar.flux.action.MenuAction) ContentAction(com.iluwatar.flux.action.ContentAction) Action(com.iluwatar.flux.action.Action) Store(com.iluwatar.flux.store.Store) ContentAction(com.iluwatar.flux.action.ContentAction) MenuAction(com.iluwatar.flux.action.MenuAction) Test(org.junit.Test)

Aggregations

Action (com.iluwatar.flux.action.Action)1 ActionType (com.iluwatar.flux.action.ActionType)1 Content (com.iluwatar.flux.action.Content)1 ContentAction (com.iluwatar.flux.action.ContentAction)1 MenuAction (com.iluwatar.flux.action.MenuAction)1 MenuItem (com.iluwatar.flux.action.MenuItem)1 Store (com.iluwatar.flux.store.Store)1 Constructor (java.lang.reflect.Constructor)1 Field (java.lang.reflect.Field)1 List (java.util.List)1 Collectors (java.util.stream.Collectors)1 Assert.assertEquals (org.junit.Assert.assertEquals)1 Assert.assertNotNull (org.junit.Assert.assertNotNull)1 Assert.assertSame (org.junit.Assert.assertSame)1 Before (org.junit.Before)1 Test (org.junit.Test)1 ArgumentCaptor (org.mockito.ArgumentCaptor)1 Mockito.mock (org.mockito.Mockito.mock)1 Mockito.times (org.mockito.Mockito.times)1 Mockito.verify (org.mockito.Mockito.verify)1