/* * Copyright 2017 OmniFaces * * 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.omnifaces.test.taghandler.validatebean; import static org.jboss.arquillian.graphene.Graphene.guardAjax; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import static org.omnifaces.test.OmniFacesIT.FacesConfig.withMessageBundle; import org.jboss.arquillian.container.test.api.Deployment; import org.jboss.shrinkwrap.api.spec.WebArchive; import org.junit.Test; import org.omnifaces.test.OmniFacesIT; import org.openqa.selenium.WebElement; import org.openqa.selenium.support.FindBy; public class ValidateBeanIT extends OmniFacesIT { @FindBy(id="messages") private WebElement messages; @FindBy(id="validateByCommand:input") private WebElement input; @FindBy(id="validateByCommand:validateDefaultByCommand") private WebElement validateDefaultByCommand; @FindBy(id="validateByCommand:validateGroupByCommand") private WebElement validateGroupByCommand; @FindBy(id="validateByCommand:validateDefaultAndGroupByCommand") private WebElement validateDefaultAndGroupByCommand; @FindBy(id="validateByCommand:validateDisabledByCommand") private WebElement validateDisabledByCommand; @FindBy(id="validateByInput:validateDefaultByInput") private WebElement validateDefaultByInput; @FindBy(id="validateByInput:validateGroupByInput") private WebElement validateGroupByInput; @FindBy(id="validateByInput:validateDefaultAndGroupByInput") private WebElement validateDefaultAndGroupByInput; @FindBy(id="validateByInput:validateDisabledByInput") private WebElement validateDisabledByInput; @FindBy(id="validateClassLevelDefault:number1") private WebElement validateClassLevelDefaultNumber1; @FindBy(id="validateClassLevelDefault:number2") private WebElement validateClassLevelDefaultNumber2; @FindBy(id="validateClassLevelDefault:command") private WebElement validateClassLevelDefaultCommand; @FindBy(id="validateClassLevelActual:number1") private WebElement validateClassLevelActualNumber1; @FindBy(id="validateClassLevelActual:number2") private WebElement validateClassLevelActualNumber2; @FindBy(id="validateClassLevelActual:command") private WebElement validateClassLevelActualCommand; @FindBy(id="validateClassLevelByCopier:number1") private WebElement validateClassLevelByCopierNumber1; @FindBy(id="validateClassLevelByCopier:number2") private WebElement validateClassLevelByCopierNumber2; @FindBy(id="validateClassLevelByCopier:command") private WebElement validateClassLevelByCopierCommand; @FindBy(id="validateClassLevelWithMessageForForm:number1") private WebElement validateClassLevelWithMessageForFormNumber1; @FindBy(id="validateClassLevelWithMessageForForm:number2") private WebElement validateClassLevelWithMessageForFormNumber2; @FindBy(id="validateClassLevelWithMessageForForm:formMessage") private WebElement validateClassLevelWithMessageForFormMessage; @FindBy(id="validateClassLevelWithMessageForForm:command") private WebElement validateClassLevelWithMessageForFormCommand; @FindBy(id="validateClassLevelWithMessageForAll:number1") private WebElement validateClassLevelWithMessageForAllNumber1; @FindBy(id="validateClassLevelWithMessageForAll:number1Message") private WebElement validateClassLevelWithMessageForAllNumber1Message; @FindBy(id="validateClassLevelWithMessageForAll:number2") private WebElement validateClassLevelWithMessageForAllNumber2; @FindBy(id="validateClassLevelWithMessageForAll:number2Message") private WebElement validateClassLevelWithMessageForAllNumber2Message; @FindBy(id="validateClassLevelWithMessageForAll:command") private WebElement validateClassLevelWithMessageForAllCommand; @FindBy(id="validateClassLevelWithMessageForGlobal:number1") private WebElement validateClassLevelWithMessageForGlobalNumber1; @FindBy(id="validateClassLevelWithMessageForGlobal:number2") private WebElement validateClassLevelWithMessageForGlobalNumber2; @FindBy(id="validateClassLevelWithMessageForGlobal:globalMessage") private WebElement validateClassLevelWithMessageForGlobalMessage; @FindBy(id="validateClassLevelWithMessageForGlobal:command") private WebElement validateClassLevelWithMessageForGlobalCommand; @FindBy(id="validateClassLevelWithMessageForViolating:number1") private WebElement validateClassLevelWithMessageForViolatingNumber1; @FindBy(id="validateClassLevelWithMessageForViolating:number1Message") private WebElement validateClassLevelWithMessageForViolatingNumber1Message; @FindBy(id="validateClassLevelWithMessageForViolating:number2") private WebElement validateClassLevelWithMessageForViolatingNumber2; @FindBy(id="validateClassLevelWithMessageForViolating:number2Message") private WebElement validateClassLevelWithMessageForViolatingNumber2Message; @FindBy(id="validateClassLevelWithMessageForViolating:formMessage") private WebElement validateClassLevelWithMessageForViolatingFormMessage; @FindBy(id="validateClassLevelWithMessageForViolating:command") private WebElement validateClassLevelWithMessageForViolatingCommand; @FindBy(id="validateClassLevelWithInputEntityComposite:composite:number1") private WebElement validateClassLevelWithInputEntityCompositeNumber1; @FindBy(id="validateClassLevelWithInputEntityComposite:composite:number1Message") private WebElement validateClassLevelWithInputEntityCompositeNumber1Message; @FindBy(id="validateClassLevelWithInputEntityComposite:composite:number2") private WebElement validateClassLevelWithInputEntityCompositeNumber2; @FindBy(id="validateClassLevelWithInputEntityComposite:composite:number2Message") private WebElement validateClassLevelWithInputEntityCompositeNumber2Message; @FindBy(id="validateClassLevelWithInputEntityComposite:formMessage") private WebElement validateClassLevelWithInputEntityCompositeFormMessage; @FindBy(id="validateClassLevelWithInputEntityComposite:command") private WebElement validateClassLevelWithInputEntityCompositeCommand; @FindBy(id="validateClassLevelWithFormEntityComposite:form:number1") private WebElement validateClassLevelWithFormEntityCompositeNumber1; @FindBy(id="validateClassLevelWithFormEntityComposite:form:number1Message") private WebElement validateClassLevelWithFormEntityCompositeNumber1Message; @FindBy(id="validateClassLevelWithFormEntityComposite:form:number2") private WebElement validateClassLevelWithFormEntityCompositeNumber2; @FindBy(id="validateClassLevelWithFormEntityComposite:form:number2Message") private WebElement validateClassLevelWithFormEntityCompositeNumber2Message; @FindBy(id="validateClassLevelWithFormEntityComposite:form:formMessage") private WebElement validateClassLevelWithFormEntityCompositeFormMessage; @FindBy(id="validateClassLevelWithFormEntityComposite:form:command") private WebElement validateClassLevelWithFormEntityCompositeCommand; @Deployment(testable=false) public static WebArchive createDeployment() { return buildWebArchive(ValidateBeanIT.class) .withFacesConfig(withMessageBundle) .createDeployment(); } @Test public void validateByCommand() { input.sendKeys("x"); guardAjax(validateDefaultByCommand).click(); assertEquals("default", messages.getText()); input.clear(); input.sendKeys("xx"); guardAjax(validateDefaultByCommand).click(); assertEquals("actionSuccess", messages.getText()); input.clear(); input.sendKeys("x"); guardAjax(validateGroupByCommand).click(); assertEquals("group", messages.getText()); input.clear(); input.sendKeys("xx"); guardAjax(validateGroupByCommand).click(); assertEquals("actionSuccess", messages.getText()); input.clear(); input.sendKeys("x"); guardAjax(validateDefaultAndGroupByCommand).click(); String message = messages.getText(); assertTrue(message.contains("default") && message.contains("group")); // It's unordered. input.clear(); input.sendKeys("xx"); guardAjax(validateDefaultAndGroupByCommand).click(); assertEquals("actionSuccess", messages.getText()); input.clear(); input.sendKeys("x"); guardAjax(validateDisabledByCommand).click(); assertEquals("actionSuccess", messages.getText()); input.clear(); input.sendKeys("xx"); guardAjax(validateDisabledByCommand).click(); assertEquals("actionSuccess", messages.getText()); } @Test public void validateByInput() { validateDefaultByInput.sendKeys("x"); triggerOnchange(validateDefaultByInput, messages); assertEquals("default", messages.getText()); validateDefaultByInput.clear(); validateDefaultByInput.sendKeys("xx"); triggerOnchange(validateDefaultByInput, messages); assertEquals("actionSuccess", messages.getText()); validateGroupByInput.sendKeys("x"); triggerOnchange(validateGroupByInput, messages); assertEquals("group", messages.getText()); validateGroupByInput.clear(); validateGroupByInput.sendKeys("xx"); triggerOnchange(validateGroupByInput, messages); assertEquals("actionSuccess", messages.getText()); validateDefaultAndGroupByInput.sendKeys("x"); triggerOnchange(validateDefaultAndGroupByInput, messages); String message = messages.getText(); assertTrue(message.contains("default") && message.contains("group")); // It's unordered. validateDefaultAndGroupByInput.clear(); validateDefaultAndGroupByInput.sendKeys("xx"); triggerOnchange(validateDefaultAndGroupByInput, messages); assertEquals("actionSuccess", messages.getText()); validateDisabledByInput.sendKeys("x"); triggerOnchange(validateDisabledByInput, messages); assertEquals("actionSuccess", messages.getText()); validateDisabledByInput.clear(); validateDisabledByInput.sendKeys("xx"); triggerOnchange(validateDisabledByInput, messages); assertEquals("actionSuccess", messages.getText()); } @Test public void validateClassLevelDefault() { validateClassLevelDefaultNumber1.sendKeys("2"); validateClassLevelDefaultNumber2.sendKeys("1"); guardAjax(validateClassLevelDefaultCommand).click(); assertEquals("invalidEntity", messages.getText()); validateClassLevelDefaultNumber2.sendKeys("0"); guardAjax(validateClassLevelDefaultCommand).click(); assertEquals("actionSuccess", messages.getText()); } @Test public void validateClassLevelActual() { validateClassLevelActualNumber1.sendKeys("2"); validateClassLevelActualNumber2.sendKeys("1"); guardAjax(validateClassLevelActualCommand).click(); assertEquals("invalidEntity actionValidationFailed", messages.getText()); validateClassLevelActualNumber2.sendKeys("0"); guardAjax(validateClassLevelActualCommand).click(); assertEquals("actionSuccess", messages.getText()); } @Test public void validateClassLevelByCopier() { validateClassLevelByCopierNumber1.sendKeys("2"); validateClassLevelByCopierNumber2.sendKeys("1"); guardAjax(validateClassLevelByCopierCommand).click(); assertEquals("invalidEntity", messages.getText()); validateClassLevelByCopierNumber2.sendKeys("0"); guardAjax(validateClassLevelByCopierCommand).click(); assertEquals("actionSuccess", messages.getText()); } @Test public void validateClassLevelWithMessageForForm() { validateClassLevelWithMessageForFormNumber1.sendKeys("2"); validateClassLevelWithMessageForFormNumber2.sendKeys("1"); guardAjax(validateClassLevelWithMessageForFormCommand).click(); assertEquals("invalidEntity", validateClassLevelWithMessageForFormMessage.getText()); validateClassLevelWithMessageForFormNumber2.sendKeys("0"); guardAjax(validateClassLevelWithMessageForFormCommand).click(); assertEquals("", validateClassLevelWithMessageForFormMessage.getText()); } @Test public void validateClassLevelWithMessageForAll() { validateClassLevelWithMessageForAllNumber1.sendKeys("2"); validateClassLevelWithMessageForAllNumber2.sendKeys("1"); guardAjax(validateClassLevelWithMessageForAllCommand).click(); assertEquals("invalidEntity", validateClassLevelWithMessageForAllNumber1Message.getText()); assertEquals("invalidEntity", validateClassLevelWithMessageForAllNumber2Message.getText()); validateClassLevelWithMessageForAllNumber2.sendKeys("0"); guardAjax(validateClassLevelWithMessageForAllCommand).click(); assertEquals("", validateClassLevelWithMessageForAllNumber1Message.getText()); assertEquals("", validateClassLevelWithMessageForAllNumber2Message.getText()); } @Test public void validateClassLevelWithMessageForGlobal() { validateClassLevelWithMessageForGlobalNumber1.sendKeys("2"); validateClassLevelWithMessageForGlobalNumber2.sendKeys("1"); guardAjax(validateClassLevelWithMessageForGlobalCommand).click(); assertEquals("invalidEntity", validateClassLevelWithMessageForGlobalMessage.getText()); validateClassLevelWithMessageForGlobalNumber2.sendKeys("0"); guardAjax(validateClassLevelWithMessageForGlobalCommand).click(); assertEquals("actionSuccess", validateClassLevelWithMessageForGlobalMessage.getText()); } @Test public void validateClassLevelWithMessageForViolating() { validateClassLevelWithMessageForViolatingNumber1.sendKeys("2"); validateClassLevelWithMessageForViolatingNumber2.sendKeys("1"); guardAjax(validateClassLevelWithMessageForViolatingCommand).click(); assertEquals("invalidEntity", validateClassLevelWithMessageForViolatingNumber1Message.getText()); assertEquals("", validateClassLevelWithMessageForViolatingNumber2Message.getText()); assertEquals("", validateClassLevelWithMessageForViolatingFormMessage.getText()); assertEquals("", messages.getText()); validateClassLevelWithMessageForViolatingNumber2.sendKeys("0"); guardAjax(validateClassLevelWithMessageForViolatingCommand).click(); assertEquals("", validateClassLevelWithMessageForViolatingNumber1Message.getText()); assertEquals("", validateClassLevelWithMessageForViolatingNumber2Message.getText()); assertEquals("", validateClassLevelWithMessageForViolatingFormMessage.getText()); assertEquals("actionSuccess", messages.getText()); } @Test public void validateClassLevelWithInputEntityComposite() { validateClassLevelWithInputEntityCompositeNumber1.sendKeys("2"); validateClassLevelWithInputEntityCompositeNumber2.sendKeys("1"); guardAjax(validateClassLevelWithInputEntityCompositeCommand).click(); assertEquals("invalidEntity", validateClassLevelWithInputEntityCompositeNumber1Message.getText()); assertEquals("", validateClassLevelWithInputEntityCompositeNumber2Message.getText()); assertEquals("", validateClassLevelWithInputEntityCompositeFormMessage.getText()); assertEquals("", messages.getText()); validateClassLevelWithInputEntityCompositeNumber2.sendKeys("0"); guardAjax(validateClassLevelWithInputEntityCompositeCommand).click(); assertEquals("", validateClassLevelWithInputEntityCompositeNumber1Message.getText()); assertEquals("", validateClassLevelWithInputEntityCompositeNumber2Message.getText()); assertEquals("", validateClassLevelWithInputEntityCompositeFormMessage.getText()); assertEquals("actionSuccess", messages.getText()); } @Test public void validateClassLevelWithFormEntityComposite() { validateClassLevelWithFormEntityCompositeNumber1.sendKeys("2"); validateClassLevelWithFormEntityCompositeNumber2.sendKeys("1"); guardAjax(validateClassLevelWithFormEntityCompositeCommand).click(); assertEquals("invalidEntity", validateClassLevelWithFormEntityCompositeNumber1Message.getText()); assertEquals("", validateClassLevelWithFormEntityCompositeNumber2Message.getText()); assertEquals("", validateClassLevelWithFormEntityCompositeFormMessage.getText()); assertEquals("", messages.getText()); validateClassLevelWithFormEntityCompositeNumber2.sendKeys("0"); guardAjax(validateClassLevelWithFormEntityCompositeCommand).click(); assertEquals("", validateClassLevelWithFormEntityCompositeNumber1Message.getText()); assertEquals("", validateClassLevelWithFormEntityCompositeNumber2Message.getText()); assertEquals("", validateClassLevelWithFormEntityCompositeFormMessage.getText()); assertEquals("actionSuccess", messages.getText()); } }