/* * 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.richInplaceSelect; import static org.jboss.arquillian.graphene.Graphene.guardAjax; import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertFalse; import static org.testng.Assert.assertTrue; import java.util.List; import javax.faces.event.PhaseId; import org.jboss.arquillian.graphene.Graphene; import org.jboss.arquillian.graphene.condition.element.WebElementConditionFactory; import org.openqa.selenium.By; import org.openqa.selenium.WebElement; import org.openqa.selenium.interactions.Action; import org.openqa.selenium.support.FindBy; import org.richfaces.fragment.common.Actions; import org.richfaces.fragment.common.Event; import org.richfaces.fragment.common.Utils; import org.richfaces.fragment.inplaceInput.ConfirmOrCancel; import org.richfaces.fragment.inplaceInput.InplaceComponentState; import org.richfaces.fragment.inplaceSelect.RichFacesInplaceSelect; import org.richfaces.tests.metamer.bean.Model; import org.richfaces.tests.metamer.ftest.AbstractWebDriverTest; import org.richfaces.tests.metamer.ftest.BasicAttributes; import org.richfaces.tests.metamer.ftest.annotations.IssueTracking; import org.richfaces.tests.metamer.ftest.extension.attributes.coverage.annotations.CoversAttributes; import org.richfaces.tests.metamer.ftest.extension.configurator.skip.annotation.Skip; import org.richfaces.tests.metamer.ftest.extension.configurator.templates.annotation.Templates; import org.richfaces.tests.metamer.ftest.webdriver.Attributes; import org.richfaces.tests.metamer.ftest.webdriver.MetamerPage; import org.richfaces.tests.metamer.ftest.webdriver.MetamerPage.WaitRequestType; import org.richfaces.tests.metamer.model.Capital; import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; /** * Test case for page faces/components/richInplaceSelect/simple.xhtml. * * @author <a href="https://community.jboss.org/people/ppitonak">Pavol Pitonak</a> */ public class TestInplaceSelectAttributes extends AbstractWebDriverTest { private static final int GUARD_TIME = 2000; private final Attributes<InplaceSelectAttributes> inplaceSelectAttributes = getAttributes(); private final By listBy = By.cssSelector("span.rf-is-lst-cord"); private final By listHeightBy = By.cssSelector("span.rf-is-lst-scrl"); private final By listWidthBy = By.cssSelector("span.rf-is-lst-pos"); @FindBy(css = "body > span.rf-is-lst-cord") private WebElement globalPopup; @FindBy(css = "span[id$=output]") private WebElement output; @FindBy(css = "[id$=inplaceSelect] span.rf-is-lst-cord") private WebElement popup; @FindBy(css = "[id$=inplaceSelect]") private RichFacesInplaceSelect select; @Override public String getComponentTestPagePath() { return "richInplaceSelect/simple.xhtml"; } private String getOutputText() { return output.getText().trim(); } @BeforeMethod(groups = "smoke") public void initFragment() { select.advanced().setSaveOnSelect(Boolean.TRUE); } @Test @CoversAttributes("activeClass") @IssueTracking("https://issues.jboss.org/browse/RF-11227") @Templates(value = "plain") public void testActiveClass() { String testedClass = "metamer-ftest-class"; assertFalse(select.advanced().getRootElement().getAttribute("class").contains(testedClass), "Select should not contain " + testedClass); inplaceSelectAttributes.set(InplaceSelectAttributes.activeClass, testedClass); assertFalse(select.advanced().getRootElement().getAttribute("class").contains(testedClass), "Select should not contain " + testedClass); select.advanced().switchToEditingState(); assertTrue(select.advanced().getRootElement().getAttribute("class").contains(testedClass), "Select should contain " + testedClass); guardAjax(select).select(10); assertFalse(select.advanced().getRootElement().getAttribute("class").contains(testedClass), "Select should not contain " + testedClass); } @Test @CoversAttributes("changedClass") @IssueTracking("https://issues.jboss.org/browse/RF-11227") @Templates(value = "plain") public void testChangedClass() { String testedClass = "metamer-ftest-class"; inplaceSelectAttributes.set(InplaceSelectAttributes.changedClass, testedClass); assertFalse(new WebElementConditionFactory(select.advanced().getRootElement()).attribute("class").contains(testedClass) .apply(driver), "Inplace select should not have class metamer-ftest-class."); guardAjax(select).select(10); assertTrue(new WebElementConditionFactory(select.advanced().getRootElement()).attribute("class").contains(testedClass) .apply(driver), "Inplace select should have class metamer-ftest-class."); } @Test(groups = { "smoke" }) @IssueTracking("https://issues.jboss.org/browse/RF-11227") public void testClick() { inplaceSelectAttributes.set(InplaceSelectAttributes.saveOnSelect, "true"); select.advanced().setSaveOnSelect(true); select.advanced().switchToEditingState(); List<WebElement> options = select.advanced().getOptions(); assertTrue(select.advanced().isInState(InplaceComponentState.ACTIVE), "Select should be active."); assertFalse(select.advanced().isInState(InplaceComponentState.CHANGED), "Select should not have changed value."); assertVisible(globalPopup, "Popup should be displayed."); assertEquals(options.size(), 50, "50 options should be displayed."); List<Capital> capitals = Model.unmarshallCapitals(); for (int i = 0; i < options.size(); i++) { assertEquals(options.get(i).getText(), capitals.get(i).getState()); } guardAjax(select).select(10); assertEquals(getOutputText(), "Hawaii", "Output should contain selected value."); assertEquals(select.advanced().getLabelValue(), "Hawaii", "Label should contain selected value."); assertTrue(select.advanced().isInState(InplaceComponentState.CHANGED), "Select should have changed value."); assertFalse(select.advanced().isInState(InplaceComponentState.ACTIVE), "Select should not be active."); getMetamerPage().assertListener(PhaseId.PROCESS_VALIDATIONS, "value changed: null -> Hawaii"); } @Test(groups = "smoke") @CoversAttributes("showControls") @Templates(exclude = { "richAccordion", "richTabPanel" }) public void testClickCancelButton() { attsSetter() .setAttribute(InplaceSelectAttributes.showControls).toValue(true) .setAttribute(InplaceSelectAttributes.saveOnSelect).toValue(false) .asSingleAction().perform(); select.advanced().setSaveOnSelect(Boolean.FALSE); ConfirmOrCancel confirmOrCancel = Graphene.guardNoRequest(select).select(10); assertEquals(getOutputText(), "", "Output should be empty."); Graphene.guardAjax(confirmOrCancel).confirmByControlls(); assertEquals(getOutputText(), "Hawaii", "Output should contain selected value."); Graphene.guardNoRequest(select.select(11)).cancelByControlls(); assertEquals(getOutputText(), "Hawaii", "Output should contain previously selected value."); } @Test @CoversAttributes("showControls") @Templates(exclude = { "richAccordion", "richTabPanel" }) public void testClickOkButton() { attsSetter() .setAttribute(InplaceSelectAttributes.showControls).toValue(true) .setAttribute(InplaceSelectAttributes.saveOnSelect).toValue(false) .asSingleAction().perform(); ConfirmOrCancel confOrCancl = Graphene.guardNoRequest(select).select(10); assertEquals(getOutputText(), "", "Output should be empty."); Graphene.guardAjax(confOrCancl).confirmByControlls(); assertEquals(getOutputText(), "Hawaii", "Output should contain selected value."); } @Test @CoversAttributes("defaultLabel") @IssueTracking("https://issues.jboss.org/browse/RF-10739") @Templates("plain") public void testDefaultLabel() { inplaceSelectAttributes.set(InplaceSelectAttributes.defaultLabel, "new label"); assertEquals(select.advanced().getLabelValue(), "new label", "Default label should change"); inplaceSelectAttributes.set(InplaceSelectAttributes.defaultLabel, ""); assertEquals(select.advanced().getLabelValue().trim(), "", "Default label should change"); assertPresent(select.advanced().getRootElement(), "Inplace select is not on the page."); assertPresent(select.advanced().getEditInputElement(), "Input should be present on the page."); assertPresent(select.advanced().getLabelInputElement(), "Default label should be present on the page."); assertNotVisible(globalPopup, "Popup should not be displayed on the page."); } @Test @CoversAttributes("disabled") public void testDisabled() { attsSetter() .setAttribute(InplaceSelectAttributes.disabled).toValue(true) .setAttribute(InplaceSelectAttributes.value).toValue("Hawaii") .asSingleAction().perform(); assertPresent(select.advanced().getRootElement(), "Inplace input is not on the page."); assertPresent(select.advanced().getLabelInputElement(), "Default label should be present on the page."); assertEquals(select.advanced().getLabelValue(), "Hawaii", "Label"); assertNotPresent(select.advanced().getEditInputElement(), "Input should not be present on the page."); assertNotPresent(select.advanced().getConfirmButtonElement(), "OK button should not be present on the page."); assertNotPresent(select.advanced().getCancelButtonElement(), "Cancel button should not be present on the page."); } @Test @CoversAttributes("disabledClass") @Templates(value = "plain") public void testDisabledClass() { inplaceSelectAttributes.set(InplaceSelectAttributes.disabled, Boolean.TRUE); testStyleClass(select.advanced().getRootElement(), BasicAttributes.disabledClass); } @Test @CoversAttributes("editEvent") public void testEditEvent() { for (Event event : new Event[] { Event.MOUSEUP, Event.DBLCLICK, Event.CLICK }) { inplaceSelectAttributes.set(InplaceSelectAttributes.editEvent, event); select.advanced().setEditByEvent(event); select.advanced().switchToEditingState(); assertVisible(globalPopup, "Popup should be displayed."); Utils.performUniversalBlur(driver); } } @Test @CoversAttributes("immediate") @IssueTracking("https://issues.jboss.org/browse/RF-11227") public void testImmediate() { inplaceSelectAttributes.set(InplaceSelectAttributes.immediate, Boolean.TRUE); guardAjax(select).select("Hawaii"); getMetamerPage().assertPhases(PhaseId.ANY_PHASE); getMetamerPage().assertListener(PhaseId.APPLY_REQUEST_VALUES, "value changed: -> Hawaii"); } @Test @Templates(value = "plain") public void testInit() { assertPresent(select.advanced().getRootElement(), "Inplace select is not on the page."); assertPresent(select.advanced().getEditInputElement(), "Input should be present on the page."); assertPresent(select.advanced().getLabelInputElement(), "Default label should be present on the page."); assertEquals(select.advanced().getLabelValue(), "Click here to edit", "Default label"); assertNotVisible(globalPopup, "Popup should not be displayed on the page."); } @Test @CoversAttributes("inputWidth") @Templates(value = "plain") public void testInputWidth() { int tolerance = 10; inplaceSelectAttributes.set(InplaceSelectAttributes.inputWidth, "300px"); select.advanced().switchToEditingState(); int width = Utils.getLocations(select.advanced().getEditInputElement()).getWidth(); assertEquals(width, 300, tolerance, "Width of input did not change."); inplaceSelectAttributes.set(InplaceSelectAttributes.inputWidth, ""); select.advanced().switchToEditingState(); width = Utils.getLocations(select.advanced().getEditInputElement()).getWidth(); assertEquals(width, 80, tolerance, "Default width of input should be around 80px."); } @Test @CoversAttributes("itemClass") @Templates(value = "plain") public void testItemClass() { final String value = "metamer-ftest-class"; inplaceSelectAttributes.set(InplaceSelectAttributes.itemClass, value); select.advanced().switchToEditingState(); for (WebElement element : select.advanced().getOptions()) { assertTrue(element.getAttribute("class").contains(value), "Select option " + element.getText() + " does not contain class " + value); } } @Test @CoversAttributes("listClass") @IssueTracking("https://issues.jboss.org/browse/RF-9845") @Templates(value = "plain") public void testListClass() { testStyleClass(driver.findElement(listBy), BasicAttributes.listClass); } @Test @CoversAttributes("listHeight") @IssueTracking("https://issues.jboss.org/browse/RF-9647") @Templates(value = "plain") public void testListHeight() { inplaceSelectAttributes.set(InplaceSelectAttributes.listHeight, "300px"); String height = select.advanced().getRootElement().findElement(listHeightBy).getCssValue("height"); assertEquals(height, "300px", "Height of list did not change correctly."); inplaceSelectAttributes.set(InplaceSelectAttributes.listHeight, ""); height = select.advanced().getRootElement().findElement(listHeightBy).getCssValue("height"); assertEquals(height, "100px", "Height of list did not change correctly."); } @Test @CoversAttributes("listWidth") @IssueTracking("https://issues.jboss.org/browse/RF-9647") @Templates(value = "plain") public void testListWidth() { inplaceSelectAttributes.set(InplaceSelectAttributes.listWidth, "300px"); String width = select.advanced().getRootElement().findElement(listWidthBy).getCssValue("width"); assertEquals(width, "300px", "Width of list did not change."); inplaceSelectAttributes.set(InplaceSelectAttributes.listWidth, ""); width = select.advanced().getRootElement().findElement(listWidthBy).getCssValue("width"); assertEquals(width, "200px", "Width of list did not change."); } @Test @CoversAttributes("onblur") @IssueTracking("https://issues.jboss.org/browse/RF-11227") public void testOnblur() { testFireEvent("blur", new Action() { @Override public void perform() { select.select(10); getMetamerPage().getRequestTimeElement().click(); } }); } @Test @CoversAttributes("onchange") @IssueTracking("https://issues.jboss.org/browse/RF-11227") public void testOnchange() { testFireEvent("change", new Action() { @Override public void perform() { guardAjax(select).select(5); } }); } @Test @CoversAttributes("onclick") @Templates(value = "plain") public void testOnclick() { testFireEvent(Event.CLICK, select.advanced().getRootElement()); } @Test @CoversAttributes("ondblclick") @Templates(value = "plain") public void testOndblclick() { testFireEvent(Event.DBLCLICK, select.advanced().getRootElement()); } @Test @CoversAttributes("onfocus") @IssueTracking("https://issues.jboss.org/browse/RF-9849") @Templates(value = "plain") public void testOnfocus() { testFireEvent("focus", new Action() { @Override public void perform() { select.advanced().getLabelInputElement().click(); } }); } @Test @CoversAttributes("oninputclick") @Templates(value = "plain") public void testOninputclick() { testFireEvent(Event.CLICK, select.advanced().getEditInputElement(), "inputclick"); } @Test @CoversAttributes("oninputdblclick") @Templates(value = "plain") public void testOninputdblclick() { testFireEvent(Event.DBLCLICK, select.advanced().getEditInputElement(), "inputdblclick"); } @Test @CoversAttributes("oninputkeydown") @Templates(value = "plain") public void testOninputkeydown() { testFireEvent(Event.KEYDOWN, select.advanced().getEditInputElement(), "inputkeydown"); } @Test @CoversAttributes("oninputkeypress") @Templates(value = "plain") public void testOninputkeypress() { testFireEvent(Event.KEYPRESS, select.advanced().getEditInputElement(), "inputkeypress"); } @Test @CoversAttributes("oninputkeyup") @Templates(value = "plain") public void testOninputkeyup() { testFireEvent(Event.KEYUP, select.advanced().getEditInputElement(), "inputkeyup"); } @Test @CoversAttributes("oninputmousedown") @Templates(value = "plain") public void testOninputmousedown() { testFireEvent(Event.MOUSEDOWN, select.advanced().getEditInputElement(), "inputmousedown"); } @Test @CoversAttributes("oninputmousemove") @Templates(value = "plain") public void testOninputmousemove() { testFireEvent(Event.MOUSEMOVE, select.advanced().getEditInputElement(), "inputmousemove"); } @Test @CoversAttributes("oninputmouseout") @Templates(value = "plain") public void testOninputmouseout() { testFireEvent(Event.MOUSEOUT, select.advanced().getEditInputElement(), "inputmouseout"); } @Test @CoversAttributes("oninputmouseover") @Templates(value = "plain") public void testOninputmouseover() { testFireEvent(Event.MOUSEOVER, select.advanced().getEditInputElement(), "inputmouseover"); } @Test @CoversAttributes("oninputmouseup") @Templates(value = "plain") public void testOninputmouseup() { testFireEvent(Event.MOUSEUP, select.advanced().getEditInputElement(), "inputmouseup"); } @Test @CoversAttributes("oninputselect") @Templates(value = "plain") public void testOninputselect() { testFireEvent(Event.SELECT, select.advanced().getEditInputElement(), "inputselect"); } @Test @CoversAttributes("onkeydown") @Templates(value = "plain") public void testOnkeydown() { testFireEvent(Event.KEYDOWN, select.advanced().getRootElement()); } @Test @CoversAttributes("onkeypress") @Templates(value = "plain") public void testOnkeypress() { testFireEvent(Event.KEYPRESS, select.advanced().getRootElement()); } @Test @CoversAttributes("onkeyup") @Templates(value = "plain") public void testOnkeyup() { testFireEvent(Event.KEYUP, select.advanced().getRootElement()); } @Test @CoversAttributes("onlistclick") @Templates(value = "plain") public void testOnlistclick() { testFireEvent("listclick", new Action() { @Override public void perform() { select.advanced().switchToEditingState(); new Actions(driver).click(globalPopup).perform(); } }); } @Test @CoversAttributes("onlistdblclick") @Templates(value = "plain") public void testOnlistdblclick() { testFireEvent("listdblclick", new Action() { @Override public void perform() { select.advanced().switchToEditingState(); new Actions(driver).doubleClick(globalPopup).perform(); } }); } @Test @Skip @CoversAttributes("onlisthide") @IssueTracking("https://issues.jboss.org/browse/RF-11768") public void testOnlisthide() { testFireEvent(inplaceSelectAttributes, InplaceSelectAttributes.onlisthide, new Action() { @Override public void perform() { // select will trigger popup menu and close it after selection select.select("Hawaii"); } }); } @Test @CoversAttributes("onlistkeydown") @Templates(value = "plain") public void testOnlistkeydown() { testFireEvent(Event.KEYDOWN, popup, "listkeydown"); } @Test @CoversAttributes("onlistkeypress") @Templates(value = "plain") public void testOnlistkeypress() { testFireEvent(Event.KEYPRESS, popup, "listkeypress"); } @Test @CoversAttributes("onlistkeyup") @Templates(value = "plain") public void testOnlistkeyup() { testFireEvent(Event.KEYUP, popup, "listkeyup"); } @Test @CoversAttributes("onlistmousedown") @Templates(value = "plain") public void testOnlistmousedown() { testFireEvent(Event.MOUSEDOWN, popup, "listmousedown"); } @Test @CoversAttributes("onlistmousemove") @Templates(value = "plain") public void testOnlistmousemove() { testFireEvent(Event.MOUSEMOVE, popup, "listmousemove"); } @Test @CoversAttributes("onlistmouseout") @Templates(value = "plain") public void testOnlistmouseout() { testFireEvent(Event.MOUSEOUT, popup, "listmouseout"); } @Test @CoversAttributes("onlistmouseover") @Templates(value = "plain") public void testOnlistmouseover() { testFireEvent(Event.MOUSEOVER, popup, "listmouseover"); } @Test @CoversAttributes("onlistmouseup") @Templates(value = "plain") public void testOnlistmouseup() { testFireEvent(Event.MOUSEUP, popup, "listmouseup"); } @Test @Skip @CoversAttributes("onlistshow") @IssueTracking("https://issues.jboss.org/browse/RF-11768") public void testOnlistshow() { testFireEvent(inplaceSelectAttributes, InplaceSelectAttributes.onlistshow, new Action() { @Override public void perform() { // clicking the root element of select will trigger the popup window select.advanced().getRootElement().click(); select.advanced().waitForPopupToShow(); } }); } @Test @CoversAttributes("onmousedown") @Templates(value = "plain") public void testOnmousedown() { testFireEvent(Event.MOUSEDOWN, select.advanced().getRootElement()); } @Test @CoversAttributes("onmousemove") @Templates(value = "plain") public void testOnmousemove() { testFireEvent(Event.MOUSEMOVE, select.advanced().getRootElement()); } @Test @CoversAttributes("onmouseout") @Templates(value = "plain") public void testOnmouseout() { testFireEvent(Event.MOUSEOUT, select.advanced().getRootElement()); } @Test @CoversAttributes("onmouseover") @Templates(value = "plain") public void testOnmouseover() { testFireEvent(Event.MOUSEOVER, select.advanced().getRootElement()); } @Test @CoversAttributes("onmouseup") @Templates(value = "plain") public void testOnmouseup() { testFireEvent(Event.MOUSEUP, select.advanced().getRootElement()); } @Test @CoversAttributes("onselectitem") @IssueTracking("https://issues.jboss.org/browse/RF-9849") public void testOnselectitem() { testFireEvent("selectitem", new Action() { @Override public void perform() { guardAjax(select).select(5); } }); } @Test @CoversAttributes("openOnEdit") public void testOpenOnEdit() { inplaceSelectAttributes.set(InplaceSelectAttributes.openOnEdit, Boolean.FALSE); select.advanced().getRootElement().click(); assertTrue(select.advanced().isInState(InplaceComponentState.ACTIVE), "Inplace select should be active."); assertPresent(popup, "Popup should not be displayed."); assertNotVisible(globalPopup, "Popup should not be displayed."); select.advanced().getEditInputElement().click(); assertNotPresent(popup, "Popup should be displayed."); assertVisible(globalPopup, "Popup should be displayed."); } @Test @CoversAttributes("rendered") @Templates(value = "plain") public void testRendered() { inplaceSelectAttributes.set(InplaceSelectAttributes.rendered, Boolean.FALSE); assertNotVisible(select, "Component should not be rendered when rendered=false."); } @Test @CoversAttributes({ "saveOnBlur", "saveOnSelect" }) @IssueTracking("https://issues.jboss.org/browse/RF-10739") public void testSaveOnBlurSelectFalseFalse() { attsSetter() .setAttribute(InplaceSelectAttributes.saveOnSelect).toValue(false) .setAttribute(InplaceSelectAttributes.saveOnBlur).toValue(false) .asSingleAction().perform(); select.advanced().setSaveOnSelect(Boolean.FALSE); // select MetamerPage.requestTimeNotChangesWaiting(select, GUARD_TIME).select(10);// Graphene.guardNoRequest waits too long assertEquals(getOutputText(), "", "Output should be empty."); // blur MetamerPage.requestTimeNotChangesWaiting(getMetamerPage().getBlurButton(), GUARD_TIME).click();// Graphene.guardNoRequest waits too long assertEquals(getOutputText(), "", "Output should be empty."); // with confirmation guardAjax(select.select(10)).confirm(); assertEquals(getOutputText(), "Hawaii", "Output should contain selected value."); } @Test @CoversAttributes({ "saveOnBlur", "saveOnSelect" }) public void testSaveOnBlurSelectFalseTrue() { inplaceSelectAttributes.set(InplaceSelectAttributes.saveOnBlur, Boolean.FALSE); // select guardAjax(select).select(10); assertEquals(getOutputText(), "Hawaii", "Output should contain selected value."); } @Test @CoversAttributes({ "saveOnBlur", "saveOnSelect" }) public void testSaveOnBlurSelectTrueFalse() { inplaceSelectAttributes.set(InplaceSelectAttributes.saveOnSelect, Boolean.FALSE); select.advanced().setSaveOnSelect(Boolean.FALSE); // select MetamerPage.requestTimeNotChangesWaiting(select, GUARD_TIME).select(10);// Graphene.guardNoRequest waits too long assertEquals(getOutputText(), "", "Output should be empty."); blur(WaitRequestType.XHR); assertEquals(getOutputText(), "Hawaii", "Output should contain selected value."); } @Test @CoversAttributes({ "saveOnBlur", "saveOnSelect" }) public void testSaveOnBlurSelectTrueTrue() { // select guardAjax(select).select(10); assertEquals(getOutputText(), "Hawaii", "Output should contain selected value."); } @Test @CoversAttributes("selectItemClass") @IssueTracking("https://issues.jboss.org/browse/RF-9896") @Templates(value = "plain") public void testSelectItemClass() { String testedStyleClass = "metamer-ftest-class"; inplaceSelectAttributes.set(InplaceSelectAttributes.selectItemClass, testedStyleClass); guardAjax(select).select(0); select.advanced().switchToEditingState(); List<WebElement> list = select.advanced().getOptions(); assertTrue(select.advanced().getSelectedOption().getAttribute("class").contains(testedStyleClass), "Selected item should contain class " + testedStyleClass); for (int i = 1; i < list.size(); i++) { assertFalse(list.get(i).getAttribute("class").contains(testedStyleClass), "Selected item should not contain class " + testedStyleClass); } } @Test @CoversAttributes("showControls") @IssueTracking("https://issues.jboss.org/browse/RF-12609") public void testShowControls() { // check initial state assertNotVisible(select.advanced().getConfirmButtonElement(), "Confirm button should not be displayed"); assertNotVisible(select.advanced().getCancelButtonElement(), "Cancel button should not be displayed"); // switch to editing state select.advanced().switchToEditingState(); assertNotVisible(select.advanced().getConfirmButtonElement(), "Confirm button should not be displayed"); assertNotVisible(select.advanced().getCancelButtonElement(), "Cancel button should not be displayed"); // set @showControls=true inplaceSelectAttributes.set(InplaceSelectAttributes.showControls, Boolean.TRUE); // check initial state, RF-12609 assertNotVisible(select.advanced().getConfirmButtonElement(), "Confirm button should not be displayed"); assertNotVisible(select.advanced().getCancelButtonElement(), "Cancel button should not be displayed"); // switch to editing state select.advanced().switchToEditingState(); assertVisible(select.advanced().getConfirmButtonElement(), "Confirm button should be displayed"); assertVisible(select.advanced().getCancelButtonElement(), "Cancel button should be displayed"); } @Test @CoversAttributes("style") @Templates(value = "plain") public void testStyle() { testStyle(select.advanced().getRootElement()); } @Test @CoversAttributes("styleClass") @Templates(value = "plain") public void testStyleclass() { testStyleClass(select.advanced().getRootElement()); } @Test @CoversAttributes("style") @IssueTracking("https://issues.jboss.org/browse/RF-10782") @Templates(value = "plain") public void testStyleWidth() { setAttribute("style", "width: 700px"); assertEquals(select.advanced().getRootElement().getCssValue("width"), "700px"); } @Test @CoversAttributes("tabindex") @IssueTracking("https://issues.jboss.org/browse/RF-10980") @Templates(value = "plain") public void testTabindex() { String testedIndex = "47"; inplaceSelectAttributes.set(InplaceSelectAttributes.tabindex, testedIndex); assertEquals(select.advanced().getEditInputElement().getAttribute("tabindex"), testedIndex, "Attribute tabindex should contain \"47\"."); testedIndex = "101"; inplaceSelectAttributes.set(InplaceSelectAttributes.tabindex, testedIndex); assertEquals(select.advanced().getEditInputElement().getAttribute("tabindex"), testedIndex, "Attribute tabindex should contain \"47\"."); } @Test @CoversAttributes("title") @Templates(value = "plain") public void testTitle() { testTitle(select.advanced().getRootElement()); } @Test @CoversAttributes("value") @Templates("plain") public void testValue() { inplaceSelectAttributes.set(InplaceSelectAttributes.value, "North Carolina"); assertEquals(select.advanced().getLabelValue(), "North Carolina", "Label should contain selected value."); } @Test @CoversAttributes("valueChangeListener") public void testValueChangeListener() { guardAjax(select).select("Alaska"); getMetamerPage().assertListener(PhaseId.PROCESS_VALIDATIONS, "value changed: null -> Alaska"); getMetamerPage().assertPhases(PhaseId.ANY_PHASE); } }