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.compview;
018
019 import com.thoughtworks.selenium.Selenium;
020 import junit.framework.Assert;
021 import org.openqa.selenium.firefox.FirefoxDriver;
022 import org.openqa.selenium.WebDriver;
023 import org.openqa.selenium.WebDriverBackedSelenium;
024 import org.junit.After;
025 import org.junit.Before;
026 import org.junit.Test;
027
028 public class ContraintsIT {
029 private Selenium selenium;
030
031 @Before
032 public void setUp() throws Exception {
033 WebDriver driver = new FirefoxDriver();
034 selenium = new WebDriverBackedSelenium(driver,
035 "http://localhost:8080/kr-dev/kr-krad/uicomponents?viewId=UifCompView&methodToCall=start&pageId=UifCompView-Page3");
036
037 // Login
038 selenium.open(
039 "http://localhost:8080/kr-dev/kr-krad/uicomponents?viewId=UifCompView&methodToCall=start&pageId=UifCompView-Page3");
040 Assert.assertEquals("Login", selenium.getTitle());
041 selenium.type("__login_user", "admin");
042 selenium.click("//input[@value='Login']");
043 selenium.waitForPageToLoad("30000");
044 }
045
046 @Test
047 public void testContraintsIT() throws Exception {
048 selenium.focus("name=field9");
049 selenium.type("name=field9", "1");
050 selenium.fireEvent("name=field9", "blur");
051 Assert.assertTrue(selenium.getAttribute("name=field9@class").matches("^[\\s\\S]*error[\\s\\S]*$"));
052 selenium.focus("name=field9");
053 selenium.type("name=field9", "12345");
054 selenium.fireEvent("name=field9", "blur");
055 Assert.assertTrue(selenium.getAttribute("name=field9@class").matches("^[\\s\\S]*valid[\\s\\S]*$"));
056 selenium.focus("name=field10");
057 selenium.type("name=field10", "2");
058 selenium.fireEvent("name=field10", "blur");
059 Assert.assertTrue(selenium.getAttribute("name=field10@class").matches("^[\\s\\S]*error[\\s\\S]*$"));
060 selenium.focus("name=field10");
061 selenium.type("name=field10", "51");
062 selenium.fireEvent("name=field10", "blur");
063 Assert.assertTrue(selenium.getAttribute("name=field10@class").matches("^[\\s\\S]*error[\\s\\S]*$"));
064 selenium.focus("name=field10");
065 selenium.type("name=field10", "25");
066 selenium.fireEvent("name=field10", "blur");
067 Assert.assertTrue(selenium.getAttribute("name=field10@class").matches("^[\\s\\S]*valid[\\s\\S]*$"));
068 selenium.focus("name=field6");
069 selenium.type("name=field6", "A");
070 selenium.fireEvent("name=field6", "blur");
071 selenium.fireEvent("name=field7", "blur");
072 Assert.assertTrue(selenium.getAttribute("name=field7@class").matches("^[\\s\\S]*error[\\s\\S]*$"));
073 selenium.type("name=field7", "B");
074 selenium.fireEvent("name=field7", "blur");
075 Assert.assertTrue(selenium.getAttribute("name=field7@class").matches("^[\\s\\S]*valid[\\s\\S]*$"));
076 selenium.fireEvent("name=field8", "blur");
077 Assert.assertTrue(selenium.getAttribute("name=field8@class").matches("^[\\s\\S]*error[\\s\\S]*$"));
078 selenium.type("name=field8", "C");
079 selenium.fireEvent("name=field8", "blur");
080 Assert.assertTrue(selenium.getAttribute("name=field8@class").matches("^[\\s\\S]*valid[\\s\\S]*$"));
081 selenium.type("name=field6", "");
082 selenium.fireEvent("name=field6", "blur");
083 Assert.assertTrue(selenium.getAttribute("name=field6@class").matches("^[\\s\\S]*error[\\s\\S]*$"));
084 selenium.type("name=field7", "");
085 selenium.fireEvent("name=field7", "blur");
086 Assert.assertTrue(selenium.getAttribute("name=field7@class").matches("^[\\s\\S]*valid[\\s\\S]*$"));
087 selenium.type("name=field8", "");
088 selenium.fireEvent("name=field8", "blur");
089 Assert.assertTrue(selenium.getAttribute("name=field6@class").matches("^[\\s\\S]*valid[\\s\\S]*$"));
090 Assert.assertTrue(selenium.getAttribute("name=field7@class").matches("^[\\s\\S]*valid[\\s\\S]*$"));
091 Assert.assertTrue(selenium.getAttribute("name=field8@class").matches("^[\\s\\S]*valid[\\s\\S]*$"));
092 selenium.type("name=field8", "C");
093 selenium.fireEvent("name=field8", "blur");
094 Assert.assertTrue(selenium.getAttribute("name=field6@class").matches("^[\\s\\S]*error[\\s\\S]*$"));
095 Assert.assertTrue(selenium.getAttribute("name=field7@class").matches("^[\\s\\S]*valid[\\s\\S]*$"));
096 Assert.assertTrue(selenium.getAttribute("name=field8@class").matches("^[\\s\\S]*error[\\s\\S]*$"));
097 selenium.type("name=field6", "A");
098 selenium.fireEvent("name=field6", "blur");
099 Assert.assertTrue(selenium.getAttribute("name=field6@class").matches("^[\\s\\S]*valid[\\s\\S]*$"));
100 Assert.assertTrue(selenium.getAttribute("name=field7@class").matches("^[\\s\\S]*error[\\s\\S]*$"));
101 Assert.assertTrue(selenium.getAttribute("name=field8@class").matches("^[\\s\\S]*valid[\\s\\S]*$"));
102 selenium.type("name=field14", "A");
103 selenium.fireEvent("name=field14", "blur");
104 Assert.assertTrue(selenium.getAttribute("name=field14@class").matches("^[\\s\\S]*error[\\s\\S]*$"));
105 selenium.type("name=field11", "A");
106 selenium.fireEvent("name=field11", "blur");
107 Assert.assertTrue(selenium.getAttribute("name=field11@class").matches("^[\\s\\S]*valid[\\s\\S]*$"));
108 Assert.assertTrue(selenium.getAttribute("name=field14@class").matches("^[\\s\\S]*valid[\\s\\S]*$"));
109 selenium.type("name=field11", "");
110 selenium.fireEvent("name=field11", "blur");
111 Assert.assertTrue(selenium.getAttribute("name=field14@class").matches("^[\\s\\S]*error[\\s\\S]*$"));
112 selenium.type("name=field12", "A");
113 selenium.fireEvent("name=field12", "blur");
114 Assert.assertTrue(selenium.getAttribute("name=field14@class").matches("^[\\s\\S]*error[\\s\\S]*$"));
115 selenium.type("name=field13", "A");
116 selenium.fireEvent("name=field13", "blur");
117 Assert.assertTrue(selenium.getAttribute("name=field13@class").matches("^[\\s\\S]*valid[\\s\\S]*$"));
118 Assert.assertTrue(selenium.getAttribute("name=field14@class").matches("^[\\s\\S]*valid[\\s\\S]*$"));
119 selenium.type("name=field11", "A");
120 selenium.fireEvent("name=field11", "blur");
121 Assert.assertTrue(selenium.getAttribute("name=field11@class").matches("^[\\s\\S]*valid[\\s\\S]*$"));
122 Assert.assertTrue(selenium.getAttribute("name=field14@class").matches("^[\\s\\S]*valid[\\s\\S]*$"));
123 selenium.type("name=field18", "A");
124 selenium.fireEvent("name=field18", "blur");
125 Assert.assertTrue(selenium.getAttribute("name=field18@class").matches("^[\\s\\S]*error[\\s\\S]*$"));
126 selenium.type("name=field15", "A");
127 selenium.fireEvent("name=field15", "blur");
128 Assert.assertTrue(selenium.getAttribute("name=field15@class").matches("^[\\s\\S]*valid[\\s\\S]*$"));
129 Assert.assertTrue(selenium.getAttribute("name=field18@class").matches("^[\\s\\S]*valid[\\s\\S]*$"));
130 selenium.type("name=field15", "");
131 selenium.fireEvent("name=field15", "blur");
132 Assert.assertTrue(selenium.getAttribute("name=field18@class").matches("^[\\s\\S]*error[\\s\\S]*$"));
133 selenium.type("name=field16", "A");
134 selenium.fireEvent("name=field16", "blur");
135 Assert.assertTrue(selenium.getAttribute("name=field18@class").matches("^[\\s\\S]*error[\\s\\S]*$"));
136 selenium.type("name=field17", "A");
137 selenium.fireEvent("name=field17", "blur");
138 Assert.assertTrue(selenium.getAttribute("name=field17@class").matches("^[\\s\\S]*valid[\\s\\S]*$"));
139 Assert.assertTrue(selenium.getAttribute("name=field18@class").matches("^[\\s\\S]*valid[\\s\\S]*$"));
140 selenium.type("name=field15", "A");
141 selenium.fireEvent("name=field15", "blur");
142 Assert.assertTrue(selenium.getAttribute("name=field18@class").matches("^[\\s\\S]*error[\\s\\S]*$"));
143 selenium.type("name=field23", "A");
144 selenium.fireEvent("name=field23", "blur");
145 Assert.assertTrue(selenium.getAttribute("name=field23@class").matches("^[\\s\\S]*error[\\s\\S]*$"));
146 selenium.type("name=field19", "A");
147 selenium.fireEvent("name=field19", "blur");
148 Assert.assertTrue(selenium.getAttribute("name=field23@class").matches("^[\\s\\S]*valid[\\s\\S]*$"));
149 selenium.type("name=field19", "");
150 selenium.fireEvent("name=field19", "blur");
151 selenium.type("name=field20", "B");
152 selenium.fireEvent("name=field20", "blur");
153 Assert.assertTrue(selenium.getAttribute("name=field23@class").matches("^[\\s\\S]*valid[\\s\\S]*$"));
154 selenium.type("name=field20", "");
155 selenium.fireEvent("name=field20", "blur");
156 Assert.assertTrue(selenium.getAttribute("name=field23@class").matches("^[\\s\\S]*error[\\s\\S]*$"));
157 selenium.type("name=field21", "C");
158 selenium.fireEvent("name=field21", "blur");
159 Assert.assertTrue(selenium.getAttribute("name=field23@class").matches("^[\\s\\S]*error[\\s\\S]*$"));
160 selenium.type("name=field22", "D");
161 selenium.fireEvent("name=field22", "blur");
162 Assert.assertTrue(selenium.getAttribute("name=field23@class").matches("^[\\s\\S]*valid[\\s\\S]*$"));
163 selenium.type("name=field19", "D");
164 selenium.fireEvent("name=field19", "blur");
165 Assert.assertTrue(selenium.getAttribute("name=field23@class").matches("^[\\s\\S]*valid[\\s\\S]*$"));
166 selenium.type("name=field20", "D");
167 selenium.fireEvent("name=field20", "blur");
168 Assert.assertTrue(selenium.getAttribute("name=field23@class").matches("^[\\s\\S]*valid[\\s\\S]*$"));
169 selenium.check("name=field24 value=case1");
170 selenium.type("name=field25", "");
171 selenium.fireEvent("name=field25", "blur");
172 Assert.assertTrue(selenium.getAttribute("name=field25@class").matches("^[\\s\\S]*error[\\s\\S]*$"));
173 selenium.check("name=field24 value=case4");
174 selenium.fireEvent("name=field24", "blur");
175 for (int second = 0; ; second++) {
176 if (second >= 60) {
177 Assert.fail("timeout");
178 }
179 try {
180 if (selenium.getAttribute("name=field25@class").matches("^[\\s\\S]*valid[\\s\\S]*$")) {
181 break;
182 }
183 } catch (Exception e) {
184 }
185 Thread.sleep(1000);
186 }
187
188 Assert.assertTrue(selenium.getAttribute("name=field25@class").matches("^[\\s\\S]*valid[\\s\\S]*$"));
189 selenium.check("name=field24 value=case1");
190 selenium.fireEvent("name=field24", "blur");
191 selenium.type("name=field25", "$100");
192 selenium.fireEvent("name=field25", "blur");
193 for (int second = 0; ; second++) {
194 if (second >= 60) {
195 Assert.fail("timeout");
196 }
197 try {
198 if (selenium.getAttribute("name=field25@class").matches("^[\\s\\S]*valid[\\s\\S]*$")) {
199 break;
200 }
201 } catch (Exception e) {
202 }
203 Thread.sleep(1000);
204 }
205
206 Assert.assertTrue(selenium.getAttribute("name=field25@class").matches("^[\\s\\S]*valid[\\s\\S]*$"));
207 selenium.check("name=field24 value=case2");
208 selenium.fireEvent("name=field24", "blur");
209 for (int second = 0; ; second++) {
210 if (second >= 60) {
211 Assert.fail("timeout");
212 }
213 try {
214 if (selenium.getAttribute("name=field25@class").matches("^[\\s\\S]*error[\\s\\S]*$")) {
215 break;
216 }
217 } catch (Exception e) {
218 }
219 Thread.sleep(1000);
220 }
221
222 Assert.assertTrue(selenium.getAttribute("name=field25@class").matches("^[\\s\\S]*error[\\s\\S]*$"));
223 selenium.type("name=field25", "A100");
224 selenium.fireEvent("name=field25", "blur");
225 Assert.assertTrue(selenium.getAttribute("name=field25@class").matches("^[\\s\\S]*valid[\\s\\S]*$"));
226 selenium.check("name=field24 value=case3");
227 selenium.fireEvent("name=field24", "blur");
228 selenium.type("name=field26", "6000");
229 selenium.fireEvent("name=field26", "blur");
230 for (int second = 0; ; second++) {
231 if (second >= 60) {
232 Assert.fail("timeout");
233 }
234 try {
235 if (selenium.getAttribute("name=field26@class").matches("^[\\s\\S]*error[\\s\\S]*$")) {
236 break;
237 }
238 } catch (Exception e) {
239 }
240 Thread.sleep(1000);
241 }
242
243 Assert.assertTrue(selenium.getAttribute("name=field26@class").matches("^[\\s\\S]*error[\\s\\S]*$"));
244 selenium.type("name=field26", "501");
245 selenium.fireEvent("name=field26", "blur");
246 Assert.assertTrue(selenium.getAttribute("name=field26@class").matches("^[\\s\\S]*error[\\s\\S]*$"));
247 selenium.type("name=field26", "499");
248 selenium.fireEvent("name=field26", "blur");
249 Assert.assertTrue(selenium.getAttribute("name=field26@class").matches("^[\\s\\S]*valid[\\s\\S]*$"));
250 selenium.type("name=field26", "6000");
251 selenium.fireEvent("name=field26", "blur");
252 selenium.check("name=field24 value=case3");
253 selenium.fireEvent("name=field24", "blur");
254 for (int second = 0; ; second++) {
255 if (second >= 60) {
256 Assert.fail("timeout");
257 }
258 try {
259 if (selenium.getAttribute("name=field26@class").matches("^[\\s\\S]*error[\\s\\S]*$")) {
260 break;
261 }
262 } catch (Exception e) {
263 }
264 Thread.sleep(1000);
265 }
266
267 Assert.assertTrue(selenium.getAttribute("name=field26@class").matches("^[\\s\\S]*error[\\s\\S]*$"));
268 selenium.check("name=field24 value=case4");
269 selenium.type("name=field27", "A");
270 selenium.fireEvent("name=field27", "blur");
271 selenium.type("name=field28", "");
272 selenium.fireEvent("name=field28", "blur");
273 for (int second = 0; ; second++) {
274 if (second >= 60) {
275 Assert.fail("timeout");
276 }
277 try {
278 if (selenium.getAttribute("name=field28@class").matches("^[\\s\\S]*error[\\s\\S]*$")) {
279 break;
280 }
281 } catch (Exception e) {
282 }
283 Thread.sleep(1000);
284 }
285
286 Assert.assertTrue(selenium.getAttribute("name=field28@class").matches("^[\\s\\S]*error[\\s\\S]*$"));
287 selenium.check("name=field24 value=case3");
288 selenium.fireEvent("name=field24", "blur");
289 for (int second = 0; ; second++) {
290 if (second >= 60) {
291 Assert.fail("timeout");
292 }
293 try {
294 if (selenium.getAttribute("name=field28@class").matches("^[\\s\\S]*valid[\\s\\S]*$")) {
295 break;
296 }
297 } catch (Exception e) {
298 }
299 Thread.sleep(1000);
300 }
301
302 Assert.assertTrue(selenium.getAttribute("name=field28@class").matches("^[\\s\\S]*valid[\\s\\S]*$"));
303 selenium.type("name=field28", "B");
304 selenium.fireEvent("name=field28", "blur");
305 selenium.check("name=field24 value=case4");
306 selenium.fireEvent("name=field24", "blur");
307 for (int second = 0; ; second++) {
308 if (second >= 60) {
309 Assert.fail("timeout");
310 }
311 try {
312 if (selenium.getAttribute("name=field28@class").matches("^[\\s\\S]*valid[\\s\\S]*$")) {
313 break;
314 }
315 } catch (Exception e) {
316 }
317 Thread.sleep(1000);
318 }
319
320 Assert.assertTrue(selenium.getAttribute("name=field28@class").matches("^[\\s\\S]*valid[\\s\\S]*$"));
321 selenium.type("name=field31", "B");
322 selenium.type("name=field32", "B");
323 selenium.fireEvent("name=field33", "blur");
324 Assert.assertTrue(selenium.getAttribute("name=field33@class").matches("^[\\s\\S]*error[\\s\\S]*$"));
325 selenium.type("name=field33", "B");
326 selenium.fireEvent("name=field33", "blur");
327 Assert.assertTrue(selenium.getAttribute("name=field33@class").matches("^[\\s\\S]*valid[\\s\\S]*$"));
328 selenium.type("name=field32", "A");
329 selenium.type("name=field33", "");
330 selenium.fireEvent("name=field33", "blur");
331 Assert.assertTrue(selenium.getAttribute("name=field33@class").matches("^[\\s\\S]*valid[\\s\\S]*$"));
332 }
333
334 @After
335 public void tearDown() throws Exception {
336 selenium.stop();
337 }
338 }