package org.richfaces.tests.metamer.ftest.richPanelMenu;
import static org.jboss.arquillian.graphene.Graphene.guardAjax;
import static org.testng.Assert.assertEquals;
import static org.testng.Assert.fail;
import org.jboss.arquillian.graphene.findby.FindByJQuery;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy;
import org.richfaces.fragment.common.Event;
import org.richfaces.fragment.common.picker.ChoicePickerHelper;
import org.richfaces.fragment.panelMenu.PanelMenuGroup;
import org.richfaces.fragment.panelMenu.RichFacesPanelMenu;
import org.richfaces.fragment.panelMenu.RichFacesPanelMenuItem;
import org.richfaces.tests.metamer.ftest.AbstractWebDriverTest;
import org.richfaces.tests.metamer.ftest.annotations.IssueTracking;
import org.richfaces.tests.metamer.ftest.webdriver.Attributes;
import org.testng.annotations.Test;
public class TestPanelMenuFragmentShowcase extends AbstractWebDriverTest {
private final Attributes<PanelMenuAttributes> attributes = getAttributes();
@FindBy(css = "div[id$=item21]")
private WebElement item21Element;
@FindBy(css = "div[id$=item22]")
private RichFacesPanelMenuItem item22;
@FindBy(css = "div[id$=item22]")
private WebElement item22Element;
@FindBy(css = "div[id$=item31]")
private WebElement item31Element;
@FindBy(className = "rf-pm")
private RichFacesPanelMenu menu;
@FindByJQuery("*[id*=current]")
private WebElement selectedItem;
@Override
public String getComponentTestPagePath() {
return "richPanelMenu/simple.xhtml";
}
@Test
@IssueTracking(value = "https://issues.jboss.org/browse/RF-13727")
public void testFragment() {
guardAjax(menu.expandGroup("Group 1")).selectItem(ChoicePickerHelper.byVisibleText().match("Item 1.2"));
assertEquals(selectedItem.getText(), "item12");
try {
menu.expandGroup("Group 2.4").selectItem("Item 2.4.1");
fail("Illegal argument exceptions should be thrown as Group 2.4 is not visible at this moment!");
} catch (IllegalArgumentException ex) {
// OK
}
try {
menu.selectItem("Item 2");
fail("IllegalArgumentExcetpion should be thrown, as item 2 is disabled atm.");
} catch (IllegalArgumentException ex) {
// OK
}
menu.expandGroup("Group 2").expandGroup("Group 2.4");
guardAjax(menu).selectItem("Item 2.4.2");
assertEquals(selectedItem.getText(), "item242");
attributes.set(PanelMenuAttributes.expandEvent, "dblclick");
menu.advanced().setExpandEvent(Event.DBLCLICK);
PanelMenuGroup group3 = menu.expandGroup("Group 3");
jsUtils.scrollToView(item31Element);
guardAjax(group3).selectItem("Item 3.1");
assertEquals(selectedItem.getText(), "item31");
jsUtils.scrollToView(item22Element);
guardAjax(item22).select();
assertEquals(selectedItem.getText(), "item22");
jsUtils.scrollToView(item21Element);
guardAjax(menu).selectItem("Item 2.1");
assertEquals(selectedItem.getText(), "item21");
}
}