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