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 waitForProgressLoading();
143 waitAndClickById("Collections-AddBlankLine-TableTop_del_line0");
144 waitForProgressLoading();
145 waitAndClickByXpath("//button[contains(.,'Add Line')]");
146 waitForProgressLoading();
147 waitForElementPresentByName("list7[0].field1");
148 assertTableLayout();
149 waitForProgressAddingLine();
150 assertEquals("", waitAndGetAttributeByName("list7[0].field1", "value"));
151 assertEquals("", waitAndGetAttributeByName("list7[0].field2", "value"));
152 assertEquals("", waitAndGetAttributeByName("list7[0].field3", "value"));
153 assertEquals("", waitAndGetAttributeByName("list7[0].field4", "value"));
154 }
155
156 private void testSum() throws InterruptedException {
157 assertEquals("5", waitAndGetAttributeByName("list1[0].field1", "value"));
158 assertEquals("6", waitAndGetAttributeByName("list1[0].field2", "value"));
159 assertEquals("7", waitAndGetAttributeByName("list1[0].field3", "value"));
160 assertEquals("8", waitAndGetAttributeByName("list1[0].field4", "value"));
161 Integer preValue= Integer.parseInt(driver.findElement(By.xpath("//fieldset/div/div[2]/p")).getText());
162 waitAndTypeByName("list1[0].field1", "1");
163 waitAndTypeByName("list1[0].field2", "1");
164 waitAndTypeByName("list1[0].field3", "1");
165 waitAndTypeByName("list1[0].field4", "1");
166 Integer postValue= Integer.parseInt(driver.findElement(By.xpath("//fieldset/div/div[2]/p")).getText());
167 if(preValue>postValue) {
168 jiraAwareFail("Totalling not working in " + getClass().toString());
169 }
170 }
171
172
173
174
175 protected void testActionColumnPlacement() throws Exception {
176
177
178
179 waitAndClickByLinkText("Column Sequence");
180 Thread.sleep(2000);
181
182
183
184
185 for (int second = 0;; second++) {
186 if (second >= waitSeconds)
187 jiraAwareFail(TIMEOUT_MESSAGE);
188 try {
189 if (isElementPresentByXpath("//tr[2]/td[6]/div/fieldset/div/button"))
190 break;
191 } catch (Exception e) {}
192 Thread.sleep(1000);
193 }
194 assertTrue(getClass().toString(), isElementPresentByXpath("//tr[2]/td[6]/div/fieldset/div/button"));
195
196
197
198 for (int second = 0;; second++) {
199 if (second >= waitSeconds)
200 jiraAwareFail(TIMEOUT_MESSAGE);
201 try {
202 if (isElementPresentByXpath("//tr/td/div/fieldset/div/button[@id='Collections-ColumnSequence-TableLeft_add']"))
203 break;
204 } catch (Exception e) {}
205 Thread.sleep(1000);
206 }
207 assertTrue(getClass().toString(), isElementPresentByXpath("//tr/td/div/fieldset/div/button[@id='Collections-ColumnSequence-TableLeft_add']"));
208
209
210
211 for (int second = 0;; second++) {
212 if (second >= waitSeconds)
213 jiraAwareFail(TIMEOUT_MESSAGE);
214 try {
215 if (isElementPresentByXpath("//tr[2]/td[3]/div/fieldset/div/button"))
216 break;
217 } catch (Exception e) {}
218 Thread.sleep(1000);
219 }
220 assertTrue(getClass().toString(), isElementPresentByXpath("//tr[2]/td[3]/div/fieldset/div/button"));
221 }
222
223 protected void testAddViaLightbox() throws Exception {
224 waitAndClickByLinkText("Add Via Lightbox");
225 waitForProgressLoading();
226 Integer preValue= Integer.parseInt(driver.findElement(By.xpath("//fieldset/div/div[2]/p")).getText());
227 waitAndClickButtonByText("Add Line");
228 waitForProgressAddingLine();
229 waitAndTypeByXpath("//div[@class='modal-body']/div[2]/div/input", "1");
230 waitAndTypeByXpath("//div[@class='modal-body']/div[4]/div/input", "1");
231 waitAndTypeByXpath("//div[@class='modal-body']/div[6]/div/input", "1");
232 waitAndTypeByXpath("//div[@class='modal-body']/div[8]/div/input", "1");
233 waitAndClickByXpath("//button[@id='Collections-AddViaLightbox-TableTop_add']");
234 waitForProgressAddingLine();
235 Integer postValue= Integer.parseInt(driver.findElement(By.xpath("//fieldset/div/div[2]/p")).getText());
236 if(preValue>postValue) {
237 jiraAwareFail("Totalling not working in " + getClass().toString());
238 }
239 }
240
241 protected void testColumnSequence() throws Exception {
242 waitAndClickByLinkText("Column Sequence");
243 acceptAlertIfPresent();
244 waitForProgressLoading();
245 waitAndTypeByName("newCollectionLines['list12'].field1", "1");
246 waitAndTypeByName("newCollectionLines['list12'].field2", "1");
247 waitAndTypeByName("newCollectionLines['list12'].field3", "1");
248 waitAndTypeByName("newCollectionLines['list12'].field4", "1");
249 waitAndClick(By.id("Collections-ColumnSequence-TableDefault_add"));
250 waitForProgressAddingLine();
251
252
253 testIfRowHasBeenAdded("list12");
254
255
256 assertTrue(getClass().toString(), isElementPresentByXpath("//div[@id='Collections-ColumnSequence-TableDefault_disclosureContent']/div[@class='dataTables_wrapper']/table/tbody/tr[2]/td[6]/div/fieldset/div/button"));
257 }
258
259 protected void testSequencerow() throws Exception {
260 waitAndClickByLinkText("Save Row");
261 acceptAlertIfPresent();
262 waitForProgressLoading();
263 waitAndTypeByName("newCollectionLines['list15'].field1", "1");
264 waitAndTypeByName("newCollectionLines['list15'].field2", "1");
265 waitAndTypeByName("newCollectionLines['list15'].field3", "1");
266 waitAndTypeByName("newCollectionLines['list15'].field4", "1");
267 clickAdd();
268 waitForProgressAddingLine();
269
270
271 testIfRowHasBeenAdded("list15");
272
273
274 assertTrue(getClass().toString(), isElementPresentByXpath("//div[@id='Collections-SaveRow-Table_disclosureContent']/div[@class='dataTables_wrapper']/table/tbody/tr[2]/td[6]/div/fieldset/div/button"));
275 }
276
277 private void clickAdd() throws InterruptedException {
278 jGrowl("Click Add");
279 waitAndClickByXpath("//button[contains(.,'Add')]");
280 }
281
282 protected void testIfRowHasBeenAdded(String whichList) throws Exception {
283
284 assertEquals("", waitAndGetAttributeByName("newCollectionLines['" + whichList + "'].field1", "value"));
285 assertEquals("", waitAndGetAttributeByName("newCollectionLines['" + whichList + "'].field2", "value"));
286 assertEquals("", waitAndGetAttributeByName("newCollectionLines['" + whichList + "'].field3", "value"));
287 assertEquals("", waitAndGetAttributeByName("newCollectionLines['" + whichList + "'].field4", "value"));
288 assertEquals("1", waitAndGetAttributeByName(whichList + "[0].field1", "value"));
289 assertEquals("1", waitAndGetAttributeByName(whichList + "[0].field2", "value"));
290 assertEquals("1", waitAndGetAttributeByName(whichList + "[0].field3", "value"));
291 assertEquals("1", waitAndGetAttributeByName(whichList + "[0].field4", "value"));
292 }
293 }