/*
* JBoss, Home of Professional Open Source
* Copyright 2010-2016, Red Hat, Inc. and individual contributors
* by the @authors tag. See the copyright.txt in the distribution for a
* full listing of individual contributors.
*
* This is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this software; if not, write to the Free
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
*/
package org.richfaces.tests.metamer.ftest.richPanelMenu;
import static org.jboss.arquillian.graphene.Graphene.guardAjax;
import org.openqa.selenium.WebElement;
import org.richfaces.component.Mode;
import org.richfaces.tests.metamer.ftest.checker.IconsChecker;
import org.richfaces.tests.metamer.ftest.extension.attributes.coverage.annotations.CoversAttributes;
import org.richfaces.tests.metamer.ftest.extension.configurator.templates.annotation.Templates;
import org.richfaces.tests.metamer.ftest.webdriver.Attributes;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
/**
* @author <a href="mailto:lfryc@redhat.com">Lukas Fryc</a>
* @author <a href="mailto:jjamrich@redhat.com">Jan Jamrich</a>
* @since 4.3.1.Final
*/
public class TestPanelMenuIcon extends AbstractPanelMenuTest {
private final Attributes<PanelMenuAttributes> panelMenuAttributes = getAttributes();
@BeforeMethod(alwaysRun = true)
public void initializePage() {
// to keep group 2 expanded after setting of the panelMenu attribute (HTTP request), so the icons are present
// WARNING it depends on the right methods call order, super.BeforeMethods should be called firstly
panelMenuAttributes.set(PanelMenuAttributes.groupMode, Mode.ajax);
}
@Test
@CoversAttributes("groupCollapsedLeftIcon")
@Templates("plain")
public void testGroupCollapsedLeftIcon() {
guardAjax(getPage().getPanelMenu()).expandGroup("Group 2");
verifyStandardIcons(PanelMenuAttributes.groupCollapsedLeftIcon, getPage().getGroup24().advanced().getLeftIconElement(), getPage().getGroup24().advanced()
.getLeftIconElement(), false);
}
@Test
@CoversAttributes("groupCollapsedRightIcon")
@Templates("plain")
public void testGroupCollapsedRightIcon() {
guardAjax(getPage().getPanelMenu()).expandGroup("Group 2");
verifyStandardIcons(PanelMenuAttributes.groupCollapsedRightIcon, getPage().getGroup24().advanced().getRightIconElement(), getPage().getGroup24().advanced()
.getRightIconElement(), false);
}
@Test
@CoversAttributes("groupDisabledLeftIcon")
@Templates("plain")
public void testGroupDisabledLeftIcon() {
guardAjax(getPage().getPanelMenu()).expandGroup("Group 2");
// for disabled icon both icons (expanded and collapsed) should be the same (state depends on implicit group settings)
verifyStandardIcons(PanelMenuAttributes.groupDisabledLeftIcon, getPage().getGroup26().advanced().getLeftIconElement(), getPage().getGroup26().advanced()
.getLeftIconElement(), false);
}
@Test
@CoversAttributes("groupDisabledRightIcon")
@Templates("plain")
public void testGroupDisabledRightIcon() {
guardAjax(getPage().getPanelMenu()).expandGroup("Group 2");
verifyStandardIcons(PanelMenuAttributes.groupDisabledRightIcon, getPage().getGroup26().advanced().getRightIconElement(), getPage().getGroup26().advanced()
.getRightIconElement(), false);
}
@Test
@CoversAttributes("groupExpandedLeftIcon")
@Templates("plain")
public void testGroupExpandedLeftIcon() {
guardAjax(getPage().getPanelMenu()).expandGroup("Group 2");
guardAjax(getPage().getPanelMenu()).expandGroup("Group 2.4");
verifyStandardIcons(PanelMenuAttributes.groupExpandedLeftIcon, getPage().getGroup24().advanced().getLeftIconElement(), getPage().getGroup24().advanced()
.getLeftIconElement(), false);
}
@Test
@CoversAttributes("groupExpandedRightIcon")
@Templates("plain")
public void testGroupExpandedRightIcon() {
guardAjax(getPage().getPanelMenu()).expandGroup("Group 2");
guardAjax(getPage().getPanelMenu()).expandGroup("Group 2.4");
verifyStandardIcons(PanelMenuAttributes.groupExpandedRightIcon, getPage().getGroup24().advanced().getRightIconElement(), getPage().getGroup24().advanced()
.getRightIconElement(), false);
}
@Test
@CoversAttributes("itemDisabledLeftIcon")
@Templates("plain")
public void testItemDisabledLeftIcon() {
guardAjax(getPage().getPanelMenu()).expandGroup("Group 2");
verifyStandardIcons(PanelMenuAttributes.itemDisabledLeftIcon, getPage().getItem25().advanced().getLeftIconElement(), getPage().getItem25().advanced()
.getLeftIconImgElement(), false);
}
@Test
@CoversAttributes("itemDisabledRightIcon")
@Templates("plain")
public void testItemDisabledRightIcon() {
guardAjax(getPage().getPanelMenu()).expandGroup("Group 2");
verifyStandardIcons(PanelMenuAttributes.itemDisabledRightIcon, getPage().getItem25().advanced().getRightIconElement(), getPage().getItem25().advanced()
.getRightIconImgElement(), false);
}
@Test
@CoversAttributes("itemLeftIcon")
@Templates("plain")
public void testItemLeftIcon() {
guardAjax(getPage().getPanelMenu()).expandGroup("Group 2");
verifyStandardIcons(PanelMenuAttributes.itemLeftIcon, getPage().getItem22().advanced().getLeftIconElement(), getPage().getItem22().advanced()
.getLeftIconImgElement(), false);
}
@Test
@CoversAttributes("itemRightIcon")
@Templates("plain")
public void testItemRightIcon() {
guardAjax(getPage().getPanelMenu()).expandGroup("Group 2");
verifyStandardIcons(PanelMenuAttributes.itemRightIcon, getPage().getItem22().advanced().getRightIconElement(), getPage().getItem22().advanced()
.getRightIconImgElement(), false);
}
@Test
@CoversAttributes("topGroupCollapsedLeftIcon")
@Templates("plain")
public void testTopGroupCollapsedLeftIcon() {
verifyStandardIcons(PanelMenuAttributes.topGroupCollapsedLeftIcon, getPage().getGroup1().advanced().getLeftIconElement(), getPage().getGroup1().advanced()
.getLeftIconElement(), true);
}
@Test
@CoversAttributes("topGroupCollapsedRightIcon")
@Templates("plain")
public void testTopGroupCollapsedRightIcon() {
verifyStandardIcons(PanelMenuAttributes.topGroupCollapsedRightIcon, getPage().getGroup1().advanced().getRightIconElement(), getPage().getGroup1().advanced()
.getRightIconElement(), true);
}
@Test
@CoversAttributes("topGroupDisabledLeftIcon")
@Templates("plain")
public void testTopGroupDisabledLeftIcon() {
verifyStandardIcons(PanelMenuAttributes.topGroupDisabledLeftIcon, getPage().getGroup4().advanced().getLeftIconElement(), getPage().getGroup4().advanced()
.getLeftIconElement(), true);
}
@Test
@CoversAttributes("topGroupDisabledRightIcon")
@Templates("plain")
public void testTopGroupDisabledRightIcon() {
verifyStandardIcons(PanelMenuAttributes.topGroupDisabledRightIcon, getPage().getGroup4().advanced().getRightIconElement(), getPage().getGroup4().advanced()
.getRightIconElement(), true);
}
@Test
@CoversAttributes("topGroupExpandedLeftIcon")
@Templates("plain")
public void testTopGroupExpandedLeftIcon() {
guardAjax(getPage().getPanelMenu()).expandGroup("Group 1");
verifyStandardIcons(PanelMenuAttributes.topGroupExpandedLeftIcon, getPage().getGroup1().advanced().getLeftIconElement(), getPage().getGroup1().advanced()
.getLeftIconElement(), true);
}
@Test
@CoversAttributes("topGroupExpandedRightIcon")
@Templates("plain")
public void testTopGroupExpandedRightIcon() {
guardAjax(getPage().getPanelMenu()).expandGroup("Group 1");
verifyStandardIcons(PanelMenuAttributes.topGroupExpandedRightIcon, getPage().getGroup1().advanced().getRightIconElement(), getPage().getGroup1().advanced()
.getRightIconElement(), true);
}
@Test
@CoversAttributes("topItemDisabledLeftIcon")
@Templates("plain")
public void testTopItemDisabledLeftIcon() {
verifyStandardIcons(PanelMenuAttributes.topItemDisabledLeftIcon, getPage().getItem4().advanced().getLeftIconElement(), getPage().getItem4().advanced()
.getLeftIconImgElement(), false);
}
@Test
@CoversAttributes("topItemDisabledRightIcon")
@Templates("plain")
public void testTopItemDisabledRightIcon() {
verifyStandardIcons(PanelMenuAttributes.topItemDisabledRightIcon, getPage().getItem4().advanced().getRightIconElement(), getPage().getItem4().advanced()
.getRightIconImgElement(), false);
}
@Test
@CoversAttributes("topItemLeftIcon")
@Templates("plain")
public void testTopItemLeftIcon() {
verifyStandardIcons(PanelMenuAttributes.topItemLeftIcon, getPage().getItem3().advanced().getLeftIconElement(), getPage().getItem3().advanced()
.getLeftIconImgElement(), false);
}
@Test
@CoversAttributes("topItemRightIcon")
@Templates("plain")
public void testTopItemRightIcon() {
verifyStandardIcons(PanelMenuAttributes.topItemRightIcon, getPage().getItem3().advanced().getRightIconElement(), getPage().getItem3().advanced()
.getRightIconImgElement(), false);
}
private void verifyStandardIcons(PanelMenuAttributes attribute, WebElement icon, WebElement imgIcon, boolean isHeaderIcon) {
new IconsChecker<PanelMenuAttributes>(driver, panelMenuAttributes).checkAll(attribute, icon, imgIcon, false, isHeaderIcon);
}
}