1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package edu.sampleu.krad.configview;
17
18 import org.junit.Test;
19 import org.kuali.rice.testtools.selenium.WebDriverLegacyITBase;
20 import org.openqa.selenium.By;
21
22
23
24
25 public class CollectionsAft extends WebDriverLegacyITBase {
26
27
28
29
30 public static final String BOOKMARK_URL = "/kr-krad/uicomponents?viewId=ConfigurationTestView-Collections&methodToCall=start";
31
32
33
34
35 public static final String TEXT_COLLECTIONS_CONFIGURATION_TEST_VIEW_XPATH =
36 "(//a[contains(text(),'Collections Configuration Test View')])[1]";
37
38
39
40
41 public static final String KUALI_COLLECTION_WINDOW_TITLE = "Kuali :: Collection Test View";
42
43 @Override
44 protected String getBookmarkUrl() {
45 return BOOKMARK_URL;
46 }
47
48 protected void navigate() throws Exception {
49 waitAndClickKRAD();
50 jGrowl("Click Collections Configuration Test View link");
51 waitAndClickByXpath(TEXT_COLLECTIONS_CONFIGURATION_TEST_VIEW_XPATH);
52 switchToWindow(KUALI_COLLECTION_WINDOW_TITLE);
53 }
54
55 protected void testCollections() throws Exception {
56 testActionColumnPlacement();
57 testAddViaLightbox();
58 testColumnSequence();
59 testSequencerow();
60 passed();
61 }
62
63 @Test
64 public void testCollectionsBookmark() throws Exception {
65 testCollections();
66 }
67
68 @Test
69 public void testCollectionsNav() throws Exception {
70 testCollections();
71 }
72
73 @Test
74 public void testAddBlankLineBookmark() throws Exception {
75 testAddBlankLine();
76 passed();
77 }
78
79 @Test
80 public void testAddBlankLineNav() throws Exception {
81 testAddBlankLine();
82 passed();
83 }
84
85 @Test
86 public void testAddDeleteBookmark() throws Exception {
87 testAddRowOfText();
88 passed();
89 }
90
91 @Test
92 public void testAddDeleteNav() throws Exception {
93 testAddRowOfText();
94 passed();
95 }
96
97 @Test
98 public void testSumBookmark() throws Exception {
99 testSum();
100 passed();
101 }
102
103 @Test
104 public void testSumNav() throws Exception {
105 testSum();
106 passed();
107 }
108
109 protected void testAddRowOfText() throws Exception {
110 assertTableLayout();
111 waitAndTypeByName("newCollectionLines['list1'].field1", "asdf1");
112 waitAndTypeByName("newCollectionLines['list1'].field2", "asdf2");
113 waitAndTypeByName("newCollectionLines['list1'].field3", "asdf3");
114 waitAndTypeByName("newCollectionLines['list1'].field4", "asdf4");
115 clickAdd();
116
117 for (int second = 0;; second++) {
118 if (second >= waitSeconds)
119 jiraAwareFail(TIMEOUT_MESSAGE);
120 try {
121 if (waitAndGetAttributeByName("newCollectionLines['list1'].field1", "value").equals(""))
122 break;
123 } catch (Exception e) {}
124 Thread.sleep(1000);
125 }
126
127 assertEquals("", waitAndGetAttributeByName("newCollectionLines['list1'].field1", "value"));
128 assertEquals("", waitAndGetAttributeByName("newCollectionLines['list1'].field2", "value"));
129 assertEquals("", waitAndGetAttributeByName("newCollectionLines['list1'].field3", "value"));
130 assertEquals("", waitAndGetAttributeByName("newCollectionLines['list1'].field4", "value"));
131 assertEquals("asdf1", waitAndGetAttributeByName("list1[0].field1", "value"));
132 assertEquals("asdf2", waitAndGetAttributeByName("list1[0].field2", "value"));
133 assertEquals("asdf3", waitAndGetAttributeByName("list1[0].field3", "value"));
134 assertEquals("asdf4", waitAndGetAttributeByName("list1[0].field4", "value"));
135 }
136
137
138
139
140 protected void testAddBlankLine() throws Exception {
141 waitAndClickByLinkText("Add Blank Line");
142 waitAndClickById("Collections-AddBlankLine-TableTop_del_line0");
143 waitForProgressLoading();
144 waitAndClickByXpath("//button[contains(.,'Add Line')]");
145 waitForProgressLoading();
146 waitForElementPresentByName("list1[0].field1");
147 assertTableLayout();
148 waitForProgressAddingLine();
149 assertEquals("", waitAndGetAttributeByName("list1[0].field1", "value"));
150 assertEquals("", waitAndGetAttributeByName("list1[0].field2", "value"));
151 assertEquals("", waitAndGetAttributeByName("list1[0].field3", "value"));
152 assertEquals("", waitAndGetAttributeByName("list1[0].field4", "value"));
153 }
154
155 private void testSum() throws InterruptedException {
156 assertEquals("5", waitAndGetAttributeByName("list1[0].field1", "value"));
157 assertEquals("6", waitAndGetAttributeByName("list1[0].field2", "value"));
158 assertEquals("7", waitAndGetAttributeByName("list1[0].field3", "value"));
159 assertEquals("8", waitAndGetAttributeByName("list1[0].field4", "value"));
160 Integer preValue= Integer.parseInt(driver.findElement(By.xpath("//fieldset/div/div[2]/p")).getText());
161 waitAndTypeByName("list1[0].field1", "1");
162 waitAndTypeByName("list1[0].field2", "1");
163 waitAndTypeByName("list1[0].field3", "1");
164 waitAndTypeByName("list1[0].field4", "1");
165 Integer postValue= Integer.parseInt(driver.findElement(By.xpath("//fieldset/div/div[2]/p")).getText());
166 if(preValue>postValue) {
167 jiraAwareFail("Totalling not working in " + getClass().toString());
168 }
169 }
170
171
172
173
174 protected void testActionColumnPlacement() throws Exception {
175
176
177
178 waitAndClickByLinkText("Column Sequence");
179 Thread.sleep(2000);
180
181
182
183
184 for (int second = 0;; second++) {
185 if (second >= waitSeconds)
186 jiraAwareFail(TIMEOUT_MESSAGE);
187 try {
188 if (isElementPresentByXpath("//tr[2]/td[6]/div/fieldset/div/button"))
189 break;
190 } catch (Exception e) {}
191 Thread.sleep(1000);
192 }
193 assertTrue(getClass().toString(), isElementPresentByXpath("//tr[2]/td[6]/div/fieldset/div/button"));
194
195
196
197 for (int second = 0;; second++) {
198 if (second >= waitSeconds)
199 jiraAwareFail(TIMEOUT_MESSAGE);
200 try {
201 if (isElementPresentByXpath("//tr/td/div/fieldset/div/button[@id='Collections-ColumnSequence-TableLeft_add']"))
202 break;
203 } catch (Exception e) {}
204 Thread.sleep(1000);
205 }
206 assertTrue(getClass().toString(), isElementPresentByXpath("//tr/td/div/fieldset/div/button[@id='Collections-ColumnSequence-TableLeft_add']"));
207
208
209
210 for (int second = 0;; second++) {
211 if (second >= waitSeconds)
212 jiraAwareFail(TIMEOUT_MESSAGE);
213 try {
214 if (isElementPresentByXpath("//tr[2]/td[3]/div/fieldset/div/button"))
215 break;
216 } catch (Exception e) {}
217 Thread.sleep(1000);
218 }
219 assertTrue(getClass().toString(), isElementPresentByXpath("//tr[2]/td[3]/div/fieldset/div/button"));
220 }
221
222 protected void testAddViaLightbox() throws Exception {
223 waitAndClickByLinkText("Add Via Lightbox");
224 Integer preValue= Integer.parseInt(driver.findElement(By.xpath("//fieldset/div/div[2]/p")).getText());
225 waitAndClickButtonByText("Add Line");
226 testColumnSequence();
227 waitAndTypeByXpath("//div[@class='modal-body']/div[2]/div/input", "1");
228 waitAndTypeByXpath("//div[@class='modal-body']/div[4]/div/input", "1");
229 waitAndTypeByXpath("//div[@class='modal-body']/div[6]/div/input", "1");
230 waitAndTypeByXpath("//div[@class='modal-body']/div[8]/div/input", "1");
231 waitAndClickByXpath("//button[@id='Collections-AddViaLightbox-TableTop_add']");
232 Thread.sleep(3000);
233 Integer postValue= Integer.parseInt(driver.findElement(By.xpath("//fieldset/div/div[2]/p")).getText());
234 if(preValue>postValue) {
235 jiraAwareFail("Totalling not working in " + getClass().toString());
236 }
237 }
238
239 protected void testColumnSequence() throws Exception {
240 waitAndClickByLinkText("Column Sequence");
241 acceptAlert();
242 waitForProgressAddingLine();
243 waitAndTypeByName("newCollectionLines['list1'].field1", "1");
244 waitAndTypeByName("newCollectionLines['list1'].field2", "1");
245 waitAndTypeByName("newCollectionLines['list1'].field3", "1");
246 waitAndTypeByName("newCollectionLines['list1'].field4", "1");
247 waitAndClick(By.id("Collections-ColumnSequence-TableDefault_add"));
248 Thread.sleep(3000);
249
250
251 testIfRowHasBeenAdded();
252
253
254 assertTrue(getClass().toString(), isElementPresentByXpath("//div[@id='Collections-ColumnSequence-TableDefault_disclosureContent']/div[@class='dataTables_wrapper']/table/tbody/tr[2]/td[6]/div/fieldset/div/button"));
255 }
256
257 protected void testSequencerow() throws Exception {
258 waitAndClickByLinkText("Save Row");
259 acceptAlert();
260 waitForProgressAddingLine();
261 waitAndTypeByName("newCollectionLines['list1'].field1", "1");
262 waitAndTypeByName("newCollectionLines['list1'].field2", "1");
263 waitAndTypeByName("newCollectionLines['list1'].field3", "1");
264 waitAndTypeByName("newCollectionLines['list1'].field4", "1");
265 clickAdd();
266 Thread.sleep(3000);
267
268
269 testIfRowHasBeenAdded();
270
271
272 assertTrue(getClass().toString(), isElementPresentByXpath("//div[@id='Collections-SaveRow-Table_disclosureContent']/div[@class='dataTables_wrapper']/table/tbody/tr[2]/td[6]/div/fieldset/div/button"));
273
274 }
275
276 private void clickAdd() throws InterruptedException {
277 jGrowl("Click Add");
278 waitAndClickByXpath("//button[contains(.,'Add')]");
279 }
280
281 protected void testIfRowHasBeenAdded() throws Exception {
282
283 assertEquals("", waitAndGetAttributeByName("newCollectionLines['list1'].field1", "value"));
284 assertEquals("", waitAndGetAttributeByName("newCollectionLines['list1'].field2", "value"));
285 assertEquals("", waitAndGetAttributeByName("newCollectionLines['list1'].field3", "value"));
286 assertEquals("", waitAndGetAttributeByName("newCollectionLines['list1'].field4", "value"));
287 assertEquals("1", waitAndGetAttributeByName("list1[0].field1", "value"));
288 assertEquals("1", waitAndGetAttributeByName("list1[0].field2", "value"));
289 assertEquals("1", waitAndGetAttributeByName("list1[0].field3", "value"));
290 assertEquals("1", waitAndGetAttributeByName("list1[0].field4", "value"));
291 }
292 }