/* * #%L * GwtMaterial * %% * Copyright (C) 2015 - 2017 GwtMaterialDesign * %% * 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. * #L% */ package gwt.material.design.client.ui; import com.google.gwt.user.client.ui.RootPanel; import gwt.material.design.client.constants.Alignment; import gwt.material.design.client.constants.CssName; import gwt.material.design.client.ui.base.MaterialWidgetTest; import gwt.material.design.client.ui.html.ListItem; /** * Test case for Dropdown. * * @author kevzlou7979 * @author Ben Dol */ public class MaterialDropdownTest extends MaterialWidgetTest<MaterialDropDown> { @Override protected MaterialDropDown createWidget() { return new MaterialDropDown(); } @Override public void testInitialClasses() { checkInitialClasses(CssName.DROPDOWN_CONTENT); } public void testOptions() { // given MaterialDropDown dropdown = getWidget(); // when / then dropdown.setBelowOrigin(true); assertTrue(dropdown.isBelowOrigin()); dropdown.setBelowOrigin(false); assertFalse(dropdown.isBelowOrigin()); dropdown.setConstrainWidth(true); assertTrue(dropdown.isConstrainWidth()); dropdown.setConstrainWidth(false); assertFalse(dropdown.isConstrainWidth()); dropdown.setGutter(20); assertEquals(20, dropdown.getGutter()); dropdown.setInDuration(100); assertEquals(100, dropdown.getInDuration()); dropdown.setOutDuration(100); assertEquals(100, dropdown.getOutDuration()); dropdown.setHover(true); assertTrue(dropdown.isHover()); dropdown.setHover(false); assertFalse(dropdown.isHover()); dropdown.setAlignment(Alignment.CENTER); assertEquals(Alignment.CENTER, dropdown.getAlignment()); dropdown.setAlignment(Alignment.RIGHT); assertEquals(Alignment.RIGHT, dropdown.getAlignment()); dropdown.setAlignment(Alignment.LEFT); assertEquals(Alignment.LEFT, dropdown.getAlignment()); dropdown.setAlignment(Alignment.DEFAULT); assertEquals(Alignment.DEFAULT, dropdown.getAlignment()); } public void testStructure() { // given MaterialDropDown dropdown = getWidget(); // when / then final String ACTIVATOR = "dpActivator"; MaterialLink link = new MaterialLink(); link.setActivates(ACTIVATOR); assertEquals(ACTIVATOR, link.getActivates()); assertTrue(link.getElement().hasAttribute("data-activates")); assertEquals(ACTIVATOR, link.getElement().getAttribute("data-activates")); RootPanel.get().add(link); dropdown.setActivator(ACTIVATOR); assertEquals(ACTIVATOR, dropdown.getId()); assertEquals(ACTIVATOR, dropdown.getActivator()); link.add(dropdown); assertNotNull(dropdown.getActivatorElement()); assertEquals(link.getElement(), dropdown.getActivatorElement()); populateDropDown(dropdown); // Smart check for parent Enabled / Disabled property dropdown.setEnabled(true); assertTrue(link.isEnabled()); dropdown.setEnabled(false); assertTrue(link.isAttached()); assertEquals(link, dropdown.getParent()); dropdown.setEnabled(true); assertEquals(5, dropdown.getChildren().size()); dropdown.remove(0); assertEquals(4, dropdown.getChildren().size()); } public void testSelection() { // given MaterialDropDown dropdown = populateDropDown(getWidget()); // when / then assertTrue(dropdown.getWidget(0) instanceof ListItem); ListItem item = (ListItem) dropdown.getWidget(0); assertTrue(item.getWidget(0) instanceof MaterialLink); MaterialLink link = (MaterialLink) item.getWidget(0); checkSelectionHandler(dropdown, link); } protected MaterialDropDown populateDropDown(MaterialDropDown dropdown) { for (int i = 1; i <= 5; i++) { MaterialLink item = new MaterialLink("Item" + i); dropdown.add(item); assertTrue(dropdown.getWidget(i - 1) instanceof ListItem); ListItem li = (ListItem) dropdown.getWidget(0); assertTrue(li.getWidget(0) instanceof MaterialLink); } return dropdown; } public void testEmptyItems() { MaterialDropDown dropdown = getWidget(false); dropdown.clear(); dropdown.add(new ListItem()); RootPanel.get().add(dropdown); } }