/* * * * Copyright 2016 Red Hat, Inc. and/or its affiliates. * * * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * * use this file except in compliance with the License. You may obtain a copy of * * the License at * * * * http://www.apache.org/licenses/LICENSE-2.0 * * * * Unless required by applicable law or agreed to in writing, software * * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * * License for the specific language governing permissions and limitations under * * the License. * */ package org.uberfire.client.views.pfly.menu; import java.util.Collections; import com.google.gwt.user.client.ui.ComplexPanel; import com.google.gwt.user.client.ui.Widget; import com.google.gwtmockito.GwtMock; import com.google.gwtmockito.GwtMockitoTestRunner; import org.apache.commons.lang3.RandomStringUtils; import org.gwtbootstrap3.client.ui.AnchorButton; import org.gwtbootstrap3.client.ui.AnchorListItem; import org.gwtbootstrap3.client.ui.DropDownHeader; import org.gwtbootstrap3.client.ui.DropDownMenu; import org.gwtbootstrap3.client.ui.ListDropDown; import org.gwtbootstrap3.client.ui.NavbarNav; import org.gwtbootstrap3.client.ui.constants.Styles; import org.gwtbootstrap3.client.ui.html.Text; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.InjectMocks; import org.uberfire.mvp.Command; import org.uberfire.workbench.model.menu.MenuPosition; import static org.junit.Assert.*; import static org.mockito.Mockito.*; @RunWith(GwtMockitoTestRunner.class) public class WorkbenchMenuCompactNavBarViewTest { @InjectMocks WorkbenchMenuCompactNavBarView workbenchMenuCompactNavBarView; @GwtMock NavbarNav navbarNav; @GwtMock AnchorListItem anchorListItem; @GwtMock ListDropDown listDropDown; @GwtMock AnchorButton anchorButton; @GwtMock DropDownMenu dropDownMenu; @GwtMock DropDownHeader dropDownHeader; @GwtMock Text text; @Test public void testAddMenuItem() { final String menuId = RandomStringUtils.random(10); final String menuParentId = null; final String label = RandomStringUtils.random(10); final MenuPosition position = MenuPosition.RIGHT; final Command command = mock(Command.class); workbenchMenuCompactNavBarView.addMenuItem(menuId, label, menuParentId, command, position); verify(dropDownMenu).add(anchorListItem); verify(anchorListItem).setText(label); assertEquals(anchorListItem, workbenchMenuCompactNavBarView.getMenuItemWidgetMap().get(menuId)); } @Test public void testAddGroupMenuItem() { final String menuId = RandomStringUtils.random(10); final String label = RandomStringUtils.random(10); final MenuPosition position = MenuPosition.RIGHT; workbenchMenuCompactNavBarView.addGroupMenuItem(menuId, label, position); verify(dropDownMenu).add(dropDownHeader); verify(dropDownHeader).setText(label); } @Test public void testAddContextMenuItem() { final String menuItemId = "menuItemId"; final String menuId = RandomStringUtils.random(10); final String menuParentId = RandomStringUtils.random(10); final String label = RandomStringUtils.random(10); final MenuPosition position = MenuPosition.RIGHT; final Command command = mock(Command.class); workbenchMenuCompactNavBarView.addContextMenuItem(menuItemId, menuId, label, menuParentId, command, position); verify(anchorListItem).setText(label); assertEquals(anchorListItem, workbenchMenuCompactNavBarView.getMenuItemContextWidgetMap().get(menuId)); assertTrue(workbenchMenuCompactNavBarView.getMenuItemContextMenus().containsValue(anchorListItem)); } @Test public void testAddContextGroupMenuItem() { final String menuItemId = "menuItemId"; final String menuId = RandomStringUtils.random(10); final String label = RandomStringUtils.random(10); final MenuPosition position = MenuPosition.RIGHT; workbenchMenuCompactNavBarView.addContextGroupMenuItem(menuItemId, menuId, label, position); verify(anchorButton).setText(label); verify(listDropDown).add(anchorButton); assertEquals(dropDownMenu, workbenchMenuCompactNavBarView.getMenuItemContextWidgetMap().get(menuId)); assertTrue(workbenchMenuCompactNavBarView.getMenuItemContextMenus().containsValue(listDropDown)); } @Test public void testSelectElement() { final ComplexPanel panel = mock(ComplexPanel.class); final ComplexPanel panelActive = mock(ComplexPanel.class); when(dropDownMenu.iterator()).thenReturn(Collections.<Widget>singletonList(panel).iterator()); workbenchMenuCompactNavBarView.selectElement(panelActive); verify(panelActive).addStyleName(Styles.ACTIVE); verify(panel).removeStyleName(Styles.ACTIVE); } @Test public void testSelectMenuItemNoMenu() { final String menuId = "menuId"; workbenchMenuCompactNavBarView.addContextMenuItem(menuId, "contextMenuId", "labelContext", null, null, null); workbenchMenuCompactNavBarView.selectMenuItem(menuId); verify(navbarNav).add(anchorListItem); verify(text).setText(""); } @Test public void testSelectMenuItem() { final String menuId = "menuId"; final String label = "label"; final String labelContext = "labelContext"; when(dropDownMenu.iterator()).thenReturn(Collections.<Widget>emptyList().iterator()); workbenchMenuCompactNavBarView.addContextMenuItem(menuId, "contextMenuId", labelContext, null, null, null); workbenchMenuCompactNavBarView.addMenuItem(menuId, label, null, null, null); workbenchMenuCompactNavBarView.selectMenuItem(menuId); verify(navbarNav).add(anchorListItem); verify(text).setText(label); verify(anchorListItem).setText(labelContext); verify(anchorListItem).setText(label); verify(dropDownMenu).add(anchorListItem); } @Test public void testClearContextMenu() { final String menuId = "menuId"; workbenchMenuCompactNavBarView.addContextMenuItem(menuId, "contextMenuItemId", "labelContextMenu", null, null, null); workbenchMenuCompactNavBarView.addContextGroupMenuItem(menuId, "contextGroupMenuId", "labelContextGroup", null); workbenchMenuCompactNavBarView.clearContextMenu(); assertTrue(workbenchMenuCompactNavBarView.getMenuItemContextMenus().isEmpty()); assertTrue(workbenchMenuCompactNavBarView.getMenuItemContextWidgetMap().isEmpty()); verify(anchorListItem, times(2)).clear(); verify(anchorListItem, times(2)).removeFromParent(); verify(listDropDown).clear(); verify(listDropDown).removeFromParent(); } @Test public void testClear() { workbenchMenuCompactNavBarView.getMenuItemContextMenus().put("key", mock(ComplexPanel.class)); workbenchMenuCompactNavBarView.getMenuItemContextWidgetMap().put("key", mock(ComplexPanel.class)); workbenchMenuCompactNavBarView.clear(); verify(navbarNav).clear(); assertTrue(workbenchMenuCompactNavBarView.getMenuItemContextMenus().isEmpty()); assertTrue(workbenchMenuCompactNavBarView.getMenuItemContextWidgetMap().isEmpty()); } }