001 /* 002 * Copyright 2006-2012 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 017 package edu.samplu.krad.validationmessagesview; 018 019 import edu.samplu.common.WebDriverLegacyITBase; 020 021 import junit.framework.Assert; 022 import org.junit.Test; 023 import org.openqa.selenium.By; 024 025 /** 026 * @author Kuali Rice Team (rice.collab@kuali.org) 027 */ 028 public class ClientErrorsLegacyIT extends WebDriverLegacyITBase { 029 @Override 030 public String getTestUrl() { 031 return "/kr-krad/uicomponents?viewId=Demo-ValidationLayout&methodToCall=start"; 032 } 033 034 @Test 035 public void testClientErrors() throws Exception { 036 fireEvent("field1", "focus"); 037 waitAndTypeByName("field1",""); 038 fireEvent("field1", "blur"); 039 Assert.assertEquals("true", getAttributeByName("field1","aria-invalid")); 040 Assert.assertTrue(getAttributeByName("field1","class").matches("^[\\s\\S]*error[\\s\\S]*$")); 041 Assert.assertTrue(isElementPresentByXpath("//textarea[@name='field1']/../../img[@alt='Error']")); 042 fireEvent("field1", "focus"); 043 for (int second = 0; ; second++) { 044 if (second >= 60) { 045 Assert.fail("timeout"); 046 } 047 try { 048 if (isVisible(".jquerybubblepopup-innerHtml")) { 049 break; 050 } 051 } catch (Exception e) { 052 } 053 Thread.sleep(1000); 054 } 055 056 Assert.assertTrue(isVisible(".jquerybubblepopup-innerHtml > .uif-clientMessageItems .uif-errorMessageItem-field")); 057 waitAndTypeByName("field1", "a"); 058 fireEvent("field1", "blur"); 059 fireEvent("field1", "focus"); 060 for (int second = 0; ; second++) { 061 if (second >= 60) { 062 Assert.fail("timeout"); 063 } 064 try { 065 if (!isVisible(".jquerybubblepopup-innerHtml")) { 066 break; 067 } 068 } catch (Exception e) { 069 } 070 Thread.sleep(1000); 071 } 072 073 Assert.assertFalse(isVisible(".jquerybubblepopup-innerHtml > .uif-clientMessageItems")); 074 fireEvent("field1", "blur"); 075 Assert.assertFalse(isElementPresentByXpath("//*[@name='field1' and @aria-invalid]")); 076 Assert.assertTrue(getAttributeByName("field1","class").matches("^[\\s\\S]*valid[\\s\\S]*$")); 077 Assert.assertFalse(isElementPresentByXpath("//textarea[@name='field1']/../img[@alt='Error']")); 078 fireEvent("field2", "focus"); 079 waitAndTypeByName("field2", ""); 080 fireEvent("field2", "blur"); 081 Assert.assertEquals("true", getAttributeByName("field2","aria-invalid")); 082 Assert.assertTrue(getAttributeByName("field2","class").matches("^[\\s\\S]*error[\\s\\S]*$")); 083 Assert.assertTrue(isElementPresentByXpath("//input[@name='field2']/../img[@alt='Error']")); 084 fireEvent("field2", "focus"); 085 waitAndTypeByName("field2", "a"); 086 fireEvent("field2", "blur"); 087 Assert.assertFalse(isElementPresentByXpath("//*[@name='field2' and @aria-invalid]")); 088 Assert.assertTrue(getAttributeByName("field2","class").matches("^[\\s\\S]*valid[\\s\\S]*$")); 089 Assert.assertFalse(isElementPresentByXpath("//textarea[@name='field2']/../img[@alt='Error']")); 090 fireEvent("field3", "focus"); 091 selectByName("field3", ""); 092 fireEvent("field3", "blur"); 093 Assert.assertEquals("true", getAttributeByName("field3","aria-invalid")); 094 Assert.assertTrue(getAttributeByName("field3","class").matches("^[\\s\\S]*error[\\s\\S]*$")); 095 Assert.assertTrue(isElementPresentByXpath("//select[@name='field3']/../img[@alt='Error']")); 096 fireEvent("field3", "focus"); 097 selectByName("field3", "Option 1"); 098 fireEvent("field3", "blur"); 099 Assert.assertFalse(isElementPresentByXpath("//*[@name='field3' and @aria-invalid]")); 100 Assert.assertTrue(getAttributeByName("field3","class").matches("^[\\s\\S]*valid[\\s\\S]*$")); 101 Assert.assertFalse(isElementPresentByXpath("//select[@name='field3']/../img[@alt='Error']")); 102 fireEvent("field114", "focus"); 103 // removeAllSelectionsByName("field114"); 104 driver.findElement(By.name("field114")).findElements(By.tagName("option")).get(0).click(); 105 fireEvent("field114", "blur"); 106 Assert.assertEquals("true", getAttributeByName("field114","aria-invalid")); 107 Assert.assertTrue(getAttributeByName("field114","class").matches("^[\\s\\S]*error[\\s\\S]*$")); 108 Assert.assertTrue(isElementPresentByXpath("//select[@name='field114']/../img[@alt='Error']")); 109 fireEvent("field114", "focus"); 110 selectByName("field114", "Option 1"); 111 fireEvent("field114", "blur"); 112 Assert.assertFalse(isElementPresentByXpath("//*[@name='field114' and @aria-invalid]")); 113 Assert.assertTrue(getAttributeByName("field114","class").matches("^[\\s\\S]*valid[\\s\\S]*$")); 114 Assert.assertFalse(isElementPresentByXpath("//select[@name='field114']/../img[@alt='Error']")); 115 fireEvent("field117", "3", "focus"); 116 uncheckByXpath("//*[@name='field117' and @value='3']"); 117 fireEvent("field117", "blur"); 118 for (int second = 0; ; second++) { 119 if (second >= 10) { 120 Assert.fail("timeout"); 121 } 122 try { 123 if (isElementPresentByXpath("//input[@name='field117']/../../../img[@alt='Error']")) { 124 break; 125 } 126 } catch (Exception e) { 127 } 128 Thread.sleep(1000); 129 } 130 131 Assert.assertEquals("true", getAttributeByXpath("//*[@name='field117' and @value='1']","aria-invalid")); 132 Assert.assertTrue(getAttributeByXpath("//*[@name='field117' and @value='1']","class").matches("^[\\s\\S]*error[\\s\\S]*$")); 133 Assert.assertTrue(isElementPresentByXpath("//input[@name='field117']/../../../img[@alt='Error']")); 134 fireEvent("field117", "3", "focus"); 135 checkByXpath("//*[@name='field117' and @value='3']"); 136 fireEvent("field117", "3", "blur"); 137 for (int second = 0; ; second++) { 138 if (second >= 60) { 139 Assert.fail("timeout"); 140 } 141 try { 142 if (!isElementPresentByXpath("//input[@name='field117']/../../../img[@alt='Error']")) { 143 break; 144 } 145 } catch (Exception e) { 146 } 147 Thread.sleep(1000); 148 } 149 150 Assert.assertFalse(isElementPresentByXpath("//*[@name='field117' and @value='3' and @aria-invalid]")); 151 Assert.assertTrue(getAttributeByXpath("//*[@name='field117' and @value='3']","class").matches("^[\\s\\S]*valid[\\s\\S]*$")); 152 Assert.assertFalse(isElementPresentByXpath("//input[@name='field117']/../../../img[@alt='Error']")); 153 fireEvent("bField1", "focus"); 154 uncheckByName("bField1"); 155 fireEvent("bField1", "blur"); 156 Assert.assertEquals("true", getAttributeByName("bField1","aria-invalid")); 157 Assert.assertTrue(getAttributeByName("bField1","class").matches("^[\\s\\S]*error[\\s\\S]*$")); 158 Assert.assertTrue(isElementPresentByXpath( 159 "//input[@name='bField1' and following-sibling::img[@alt='Error']]")); 160 fireEvent("bField1", "focus"); 161 checkByName("bField1"); 162 fireEvent("bField1", "blur"); 163 Assert.assertFalse(isElementPresentByXpath("//*[@name='bField1' and @aria-invalid]")); 164 Assert.assertTrue(getAttributeByName("bField1","class").matches("^[\\s\\S]*valid[\\s\\S]*$")); 165 Assert.assertFalse(isElementPresentByXpath( 166 "//input[@name='bField1' and following-sibling::img[@alt='Error']]")); 167 fireEvent("field115", "3", "focus"); 168 uncheckByXpath("//*[@name='field115' and @value='3']"); 169 uncheckByXpath("//*[@name='field115' and @value='4']"); 170 fireEvent("field115", "blur"); 171 for (int second = 0; ; second++) { 172 if (second >= 60) { 173 Assert.fail("timeout"); 174 } 175 try { 176 if (isElementPresentByXpath("//input[@name='field115']/../../../img[@alt='Error']")) { 177 break; 178 } 179 } catch (Exception e) { 180 } 181 Thread.sleep(1000); 182 } 183 184 Assert.assertEquals("true", getAttributeByXpath("//*[@name='field115' and @value='1']","aria-invalid")); 185 Assert.assertTrue(getAttributeByXpath("//*[@name='field115' and @value='1']","class").matches("^[\\s\\S]*error[\\s\\S]*$")); 186 Assert.assertTrue(isElementPresentByXpath("//input[@name='field115']/../../../img[@alt='Error']")); 187 fireEvent("field115","3", "focus"); 188 checkByXpath("//*[@name='field115' and @value='3']"); 189 checkByXpath("//*[@name='field115' and @value='4']"); 190 fireEvent("field115", "blur"); 191 for (int second = 0; ; second++) { 192 if (second >= 60) { 193 Assert.fail("timeout"); 194 } 195 try { 196 if (!isElementPresentByXpath("//input[@name='field115']/../../../img[@alt='Error']")) { 197 break; 198 } 199 } catch (Exception e) { 200 } 201 Thread.sleep(1000); 202 } 203 204 Assert.assertFalse(isElementPresentByXpath("//*[@name='field115' and @value='3' and @aria-invalid]")); 205 Assert.assertFalse(isElementPresentByXpath("//input[@name='field115']/../../../img[@alt='Error']")); 206 passed(); 207 } 208 }