001 /** 002 * Copyright 2005-2013 The Kuali Foundation 003 * 004 * Licensed under the Educational Community License, Version 2.0 (the "License"); 005 * you may not use this file except in compliance with the License. 006 * You may obtain a copy of the License at 007 * 008 * http://www.opensource.org/licenses/ecl2.php 009 * 010 * Unless required by applicable law or agreed to in writing, software 011 * distributed under the License is distributed on an "AS IS" BASIS, 012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 013 * See the License for the specific language governing permissions and 014 * limitations under the License. 015 */ 016 package edu.samplu.krad.library.validation; 017 018 import org.junit.Test; 019 020 import edu.samplu.common.SmokeTestBase; 021 022 /** 023 * @author Kuali Rice Team (rice.collab@kuali.org) 024 */ 025 public class DemoLibraryValidationMustOccurConstraintsSmokeTest extends SmokeTestBase { 026 027 /** 028 * /kr-krad/kradsampleapp?viewId=Demo-MustOccurConstraint-View&methodToCall=start 029 */ 030 public static final String BOOKMARK_URL = "/kr-krad/kradsampleapp?viewId=Demo-MustOccurConstraint-View&methodToCall=start"; 031 032 /** 033 * 1-2 of the following must occur: (Field 1A) OR (Field 2A and Field 2B) 034 */ 035 private static final String EXAMPLE1_VALIDATION_MESSAGE=" 1-2 of the following must occur: (Field 1A) OR (Field 2A and Field 2B)"; 036 037 /** 038 * The following must occur: (Field 1A) OR (Field 2A and Field 2B) 039 */ 040 private static final String EXAMPLE2_VALIDATION_MESSAGE=" The following must occur: (Field 1A) OR (Field 2A and Field 2B)"; 041 042 /** 043 * 1-2 of the following must occur: (Field 1A or Field 1B) OR (Field 2A and Field 2B) 044 */ 045 private static final String EXAMPLE3_VALIDATION_MESSAGE=" 1-2 of the following must occur: (Field 1A or Field 1B) OR (Field 2A and Field 2B)"; 046 047 /** 048 * //input[@name='inputField4' and @class='uif-textControl dependsOn-inputField1 dependsOn-inputField2 dependsOn-inputField3 dirty error'] 049 */ 050 private static final String EXAMPLE1_ERROR_XPATH="//input[@name='inputField4' and @class='uif-textControl dependsOn-inputField1 dependsOn-inputField2 dependsOn-inputField3 dirty error']"; 051 052 /** 053 * //input[@name='inputField8' and @class='uif-textControl dependsOn-inputField5 dependsOn-inputField6 dependsOn-inputField7 dirty error'] 054 */ 055 private static final String EXAMPLE2_ERROR_XPATH="//input[@name='inputField8' and @class='uif-textControl dependsOn-inputField5 dependsOn-inputField6 dependsOn-inputField7 dirty error']"; 056 057 /** 058 * //input[@name='inputField13' and @class='uif-textControl dependsOn-inputField9 dependsOn-inputField10 dependsOn-inputField11 dependsOn-inputField12 dirty error'] 059 */ 060 private static final String EXAMPLE3_ERROR_XPATH="//input[@name='inputField13' and @class='uif-textControl dependsOn-inputField9 dependsOn-inputField10 dependsOn-inputField11 dependsOn-inputField12 dirty error']"; 061 062 @Override 063 protected String getBookmarkUrl() { 064 return BOOKMARK_URL; 065 } 066 067 @Override 068 protected void navigate() throws Exception { 069 waitAndClickById("Demo-LibraryLink", ""); 070 waitAndClickByLinkText("Validation"); 071 waitAndClickByLinkText("Must Occur Constraint"); 072 } 073 074 protected void testValidationMustOccurConstraintsExample1() throws Exception { 075 //Scenario-1 076 waitAndTypeByName("inputField4","a"); 077 waitAndTypeByName("inputField1",""); 078 assertElementPresentByXpath(EXAMPLE1_ERROR_XPATH); 079 fireMouseOverEventByName("inputField4"); 080 assertTextPresent(EXAMPLE1_VALIDATION_MESSAGE); 081 082 //Scenario-2 083 waitAndTypeByName("inputField1","a"); 084 waitAndTypeByName("inputField2",""); 085 if(isElementPresentByXpath(EXAMPLE1_ERROR_XPATH)) { 086 fail("Criteria Not Satisfied"); 087 } 088 089 //Scenario-3 090 clearTextByName("inputField1"); 091 waitAndTypeByName("inputField2","a"); 092 waitAndTypeByName("inputField1",""); 093 assertElementPresentByXpath(EXAMPLE1_ERROR_XPATH); 094 fireMouseOverEventByName("inputField4"); 095 assertTextPresent(EXAMPLE1_VALIDATION_MESSAGE); 096 097 //Scenario-4 098 waitAndTypeByName("inputField3","a"); 099 waitAndTypeByName("inputField1",""); 100 if(isElementPresentByXpath(EXAMPLE1_ERROR_XPATH)) { 101 fail("Criteria Not Satisfied"); 102 } 103 } 104 105 protected void testValidationMustOccurConstraintsExample2() throws Exception { 106 waitAndClickByLinkText("Example 2"); 107 108 //Scenario-1 109 waitAndTypeByName("inputField8","a"); 110 waitAndTypeByName("inputField5",""); 111 assertElementPresentByXpath(EXAMPLE2_ERROR_XPATH); 112 fireMouseOverEventByName("inputField8"); 113 assertTextPresent(EXAMPLE2_VALIDATION_MESSAGE); 114 115 //Scenario-2 116 waitAndTypeByName("inputField5","a"); 117 waitAndTypeByName("inputField6",""); 118 if(isElementPresentByXpath(EXAMPLE2_ERROR_XPATH)) { 119 fail("Criteria Not Satisfied"); 120 } 121 122 //Scenario-3 123 clearTextByName("inputField5"); 124 waitAndTypeByName("inputField6","a"); 125 waitAndTypeByName("inputField5",""); 126 assertElementPresentByXpath(EXAMPLE2_ERROR_XPATH); 127 fireMouseOverEventByName("inputField8"); 128 assertTextPresent(EXAMPLE2_VALIDATION_MESSAGE); 129 130 //Scenario-4 131 waitAndTypeByName("inputField7","a"); 132 waitAndTypeByName("inputField5",""); 133 if (isElementPresentByXpath(EXAMPLE2_ERROR_XPATH)){ 134 fail("Criteria Not Satisfied"); 135 } 136 137 //Scenario-5 138 waitAndTypeByName("inputField5","a"); 139 waitAndTypeByName("inputField8","a"); 140 assertElementPresentByXpath(EXAMPLE2_ERROR_XPATH); 141 fireMouseOverEventByName("inputField8"); 142 assertTextPresent(EXAMPLE1_VALIDATION_MESSAGE); 143 } 144 145 protected void testValidationMustOccurConstraintsExample3() throws Exception { 146 waitAndClickByLinkText("Example 3"); 147 148 //Scenario-1 149 waitAndTypeByName("inputField13","a"); 150 waitAndTypeByName("inputField9",""); 151 Thread.sleep(1000); 152 assertElementPresentByXpath(EXAMPLE3_ERROR_XPATH); 153 fireMouseOverEventByName("inputField13"); 154 assertTextPresent(EXAMPLE3_VALIDATION_MESSAGE); 155 156 //Scenario-2 157 waitAndTypeByName("inputField9","a"); 158 waitAndTypeByName("inputField13",""); 159 if (isElementPresentByXpath(EXAMPLE3_ERROR_XPATH)) { 160 fail("Criteria Not Satisfied"); 161 } 162 clearTextByName("inputField9"); 163 164 //Scenario-3 165 waitAndTypeByName("inputField10","a"); 166 waitAndTypeByName("inputField13",""); 167 if (isElementPresentByXpath(EXAMPLE3_ERROR_XPATH)) { 168 fail("Criteria Not Satisfied"); 169 } 170 clearTextByName("inputField10"); 171 172 //Scenario-4 173 waitAndTypeByName("inputField11","a"); 174 waitAndTypeByName("inputField12","a"); 175 waitAndTypeByName("inputField13",""); 176 if (isElementPresentByXpath(EXAMPLE3_ERROR_XPATH)) { 177 fail("Criteria Not Satisfied"); 178 } 179 } 180 181 182 @Test 183 public void testValidationMustOccurConstraintsBookmark() throws Exception { 184 testValidationMustOccurConstraintsExample1(); 185 testValidationMustOccurConstraintsExample2(); 186 testValidationMustOccurConstraintsExample3(); 187 passed(); 188 } 189 190 @Test 191 public void testValidationMustOccurConstraintsNav() throws Exception { 192 testValidationMustOccurConstraintsExample1(); 193 testValidationMustOccurConstraintsExample2(); 194 testValidationMustOccurConstraintsExample3(); 195 passed(); 196 } 197 }