1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package edu.sampleu.main;
17
18 import org.junit.Before;
19 import org.junit.BeforeClass;
20 import org.junit.Test;
21 import org.kuali.rice.testtools.selenium.AutomatedFunctionalTestUtils;
22 import org.kuali.rice.testtools.selenium.WebDriverLegacyITBase;
23 import org.kuali.rice.testtools.selenium.WebDriverUtils;
24 import org.openqa.selenium.By;
25 import static edu.sampleu.main.PeopleFlowCreateNewAftBase.PeopleFlowDocInfo;
26
27
28
29
30
31 public class AgendaEditorAndOrToggleSyncAft extends WebDriverLegacyITBase {
32 public static final String PEOPLE_FLOW_LINK_TEXT = "People Flow";
33 public static final String BOOKMARK_URL =
34 AutomatedFunctionalTestUtils.PORTAL
35 + "?channelTitle=Agenda%20Lookup&channelUrl="
36 + WebDriverUtils.getBaseUrlString()
37 + AutomatedFunctionalTestUtils.KRAD_LOOKUP_METHOD
38 + "org.kuali.rice.krms.impl.repository.AgendaBo"
39 + AutomatedFunctionalTestUtils.SHOW_MAINTENANCE_LINKS
40 + "&returnLocation="
41 + AutomatedFunctionalTestUtils.PORTAL_URL
42 + AutomatedFunctionalTestUtils.HIDE_RETURN_LINK;
43
44 public static final String ID_TEXT = "T1001";
45
46 private String getPeopleFlowId() throws Exception {
47 selectParentWindow();
48 waitAndClickMainMenu();
49 waitAndClickByLinkText(PEOPLE_FLOW_LINK_TEXT);
50 waitForPageToLoad();
51
52 PeopleFlowDocInfo docInfo = peopleFlowCreateNew();
53 jGrowl("people flow id is created");
54
55 selectParentWindow();
56 waitAndClickMainMenu();
57 waitAndClickByLinkText(PEOPLE_FLOW_LINK_TEXT);
58 waitForPageToLoad();
59 jGrowl("ready to search people flow");
60
61 selectFrameIframePortlet();
62 selectByName("lookupCriteria[namespaceCode]", "KUALI - Kuali Systems");
63 waitClearAndType("lookupCriteria[name]", docInfo.getName());
64 waitAndClickByXpath("//button[contains(text(),'Search')]");
65 waitForTextPresent("edit");
66 jGrowl("search people flow search complete");
67
68 String id = getTextByXpath("(//span[contains(@id,'line0_control')])[1]");
69 assertTrue(id != null);
70 jGrowl("people flow id is " + id);
71
72 selectParentWindow();
73 waitAndClickMainMenu();
74 waitAndClickByLinkText(AGENDA_LOOKUP_LINK_TEXT);
75 waitForPageToLoad();
76
77 return id;
78 }
79
80 private PeopleFlowDocInfo peopleFlowCreateNew() throws Exception {
81 selectFrameIframePortlet();
82
83 waitAndClickByLinkText("Create New");
84 String peopleFlowNamespace = "KUALI - Kuali Systems";
85 String peopleFlowName = "Document Name" + AutomatedFunctionalTestUtils.createUniqueDtsPlusTwoRandomChars();
86
87
88 waitForElementPresentByXpath("//div[@data-label='Document Number']/span");
89 String docId = getTextByXpath("//div[@data-label='Document Number']/span");
90 assertTrue(docId != null);
91 jGrowlSticky("Doc Id is " + docId);
92
93 clearTextByName("document.documentHeader.documentDescription");
94 waitAndTypeByName("document.documentHeader.documentDescription", "Description for Document");
95 waitAndSelectByName("document.newMaintainableObject.dataObject.namespaceCode", peopleFlowNamespace);
96 clearTextByName("document.newMaintainableObject.dataObject.name");
97 waitAndTypeByName("document.newMaintainableObject.dataObject.name", peopleFlowName);
98
99 jGrowl("Add Member kr");
100 clearTextByName("newCollectionLines['document.newMaintainableObject.dataObject.members'].memberName");
101 waitAndTypeByName("newCollectionLines['document.newMaintainableObject.dataObject.members'].memberName", "kr");
102 findElement(By.name("newCollectionLines['document.newMaintainableObject.dataObject.members'].forceAction")).click();
103 waitAndClick(By.cssSelector("button[data-loadingmessage='Adding Line...']"));
104 Thread.sleep(3000);
105 checkForIncidentReport();
106
107 jGrowl("Add Member admin");
108 clearTextByName("newCollectionLines['document.newMaintainableObject.dataObject.members'].priority");
109 waitAndTypeByName("newCollectionLines['document.newMaintainableObject.dataObject.members'].priority", "2");
110 clearTextByName("newCollectionLines['document.newMaintainableObject.dataObject.members'].memberName");
111 waitAndTypeByName("newCollectionLines['document.newMaintainableObject.dataObject.members'].memberName", "admin");
112 waitAndClick(By.cssSelector("button[data-loadingmessage='Adding Line...']"));
113 Thread.sleep(3000);
114
115 waitAndClickButtonByExactText("Save");
116 waitForTextPresent("SAVED", WebDriverUtils.configuredImplicityWait() * 4);
117 waitForTextPresent(" Document was successfully saved.");
118
119 submit();
120
121 return new PeopleFlowDocInfo(docId, peopleFlowNamespace, peopleFlowName);
122 }
123
124 @Override
125 protected String getBookmarkUrl() {
126 return BOOKMARK_URL;
127 }
128
129 @Override
130 protected void navigate() throws Exception {
131 waitAndClickByLinkText(AGENDA_LOOKUP_LINK_TEXT);
132 waitForPageToLoad();
133 }
134
135 protected void testAgendaEditorAndOrToggleSync() throws Exception {
136 selectFrameIframePortlet();
137 waitClearAndType("lookupCriteria[name]", "SimpleAgendaCompoundProp");
138 waitAndClickByXpath("//button[contains(text(),'Search')]");
139 waitAndClickByXpath("//a[contains(text(),'edit')]");
140 selectFrameIframePortlet();
141 waitAndClickByXpath("//a/div[contains(text(),'CmpdTestRule: For testing compound props')]");
142 waitAndClickByXpath("//button[contains(text(),'Edit Rule')]");
143 selectFrameIframePortlet();
144 waitForTextPresent("( Campus Code = Muir AND Campus Code = Revelle AND Campus Code = Warren )");
145 selectByName("document.newMaintainableObject.dataObject.agendaItemLine.rule.propositionTree.rootElement.children[0].children[1].data.proposition.compoundOpCode","OR");
146 selectByName("document.newMaintainableObject.dataObject.agendaItemLine.rule.propositionTree.rootElement.children[0].children[3].data.proposition.compoundOpCode","OR");
147 waitForTextNotPresent("( Campus Code = Muir AND Campus Code = Revelle AND Campus Code = Warren )");
148 waitForTextPresent("( Campus Code = Muir OR Campus Code = Revelle OR Campus Code = Warren )");
149 }
150
151 protected void testAgendaEditorEditRuleAddActionsBlank() throws Exception {
152
153 testFillRequiredDetails("", null);
154 save();
155 submit();
156
157
158 selectParentWindow();
159 waitAndClickMainMenu();
160 navigate();
161 testFillRequiredDetails("",null);
162 waitForTextPresent("INITIATED");
163 waitAndClickButtonByExactText("Blanket Approve");
164 waitAndClickConfirmBlanketApproveOk();
165 }
166
167 protected void save() throws InterruptedException {
168 waitForTextPresent("INITIATED");
169 waitAndClickButtonByExactText("Save");
170 waitForProgressSaving();
171 waitForTextPresent("SAVED");
172 waitForTextPresent(" Document was successfully saved.");
173 }
174
175 protected void testAgendaEditorEditRuleAddActionsKrmsActionResolverType() throws Exception {
176
177 selectParentWindow();
178 waitAndClickMainMenu();
179 navigate();
180 testFillRequiredDetails("KrmsActionResolverType", null);
181 save();
182 submit();
183
184
185 selectParentWindow();
186 waitAndClickMainMenu();
187 navigate();
188 testFillRequiredDetails("KrmsActionResolverType",null);
189 waitForTextPresent("INITIATED");
190 waitAndClickButtonByExactText("Blanket Approve");
191 waitAndClickConfirmBlanketApproveOk();
192 }
193
194 protected void submit() throws InterruptedException {
195 waitAndClickButtonByExactText("Submit");
196 waitAndClickConfirmSubmitOk();
197 waitForTextPresent("ENROUTE");
198 waitForTextPresent("Document was successfully submitted.");
199 }
200
201 protected void testAgendaEditorEditRuleAddActionsNotifyPeopleFlow(String peopleFlowId) throws Exception {
202
203 selectParentWindow();
204 waitAndClickMainMenu();
205 navigate();
206 testFillRequiredDetails("Notify PeopleFlow", peopleFlowId);
207 save();
208 submit();
209
210
211 selectParentWindow();
212 waitAndClickMainMenu();
213 navigate();
214 testFillRequiredDetails("Notify PeopleFlow",peopleFlowId);
215 waitForTextPresent("INITIATED");
216 waitAndClickButtonByExactText("Blanket Approve");
217 waitAndClickConfirmBlanketApproveOk();
218 }
219
220 protected void testAgendaEditorEditRuleAddActionsRouteToPeopleFlow(String peopleFlowId) throws Exception {
221
222 selectParentWindow();
223 waitAndClickMainMenu();
224 navigate();
225 testFillRequiredDetails("Route to PeopleFlow", peopleFlowId);
226 save();
227 submit();
228
229
230 selectParentWindow();
231 waitAndClickMainMenu();
232 navigate();
233 testFillRequiredDetails("Route to PeopleFlow",peopleFlowId);
234 waitForTextPresent("INITIATED");
235 waitAndClickButtonByExactText("Blanket Approve");
236 waitAndClickConfirmBlanketApproveOk();
237 }
238
239 protected void testAgendaEditorEditRuleAddActionsValidationAction() throws Exception {
240
241 selectParentWindow();
242 waitAndClickMainMenu();
243 navigate();
244 testFillRequiredDetails("Validation Action",null);
245 save();
246 submit();
247
248
249 selectParentWindow();
250 waitAndClickMainMenu();
251 navigate();
252 testFillRequiredDetails("Validation Action",null);
253 waitForTextPresent("INITIATED");
254 waitAndClickButtonByExactText("Blanket Approve");
255 waitAndClickConfirmBlanketApproveOk();
256 }
257
258 private void testFillRequiredDetails(String selectValue,String peopleFlowId) throws Exception {
259 selectFrameIframePortlet();
260 waitClearAndType("lookupCriteria[id]", ID_TEXT);
261 waitAndClickByXpath("//button[contains(text(),'Search')]");
262 waitAndClickByXpath("//a[contains(text(),'edit')]");
263 selectFrameIframePortlet();
264 waitAndClickByXpath("//a[@class='agendaNode ruleNode']");
265 waitAndClickByXpath("//button[contains(text(),'Edit Rule')]");
266 selectFrameIframePortlet();
267 selectByName("document.newMaintainableObject.dataObject.agendaItemLineRuleAction.typeId", selectValue);
268
269 if (selectValue.equals("KrmsActionResolverType") || selectValue.equalsIgnoreCase("Validation Action")){
270 waitClearAndType("document.newMaintainableObject.dataObject.agendaItemLineRuleAction.name", "ActionName");
271 }
272
273 waitForElementPresentByXpath("document.newMaintainableObject.dataObject.customRuleActionAttributesMap[peopleFlowId]");
274
275 if(selectValue.equalsIgnoreCase("Notify PeopleFlow") || selectValue.equalsIgnoreCase("Route to PeopleFlow")){
276 waitClearAndType("document.newMaintainableObject.dataObject.customRuleActionAttributesMap[peopleFlowId]", peopleFlowId);
277 waitClearAndType("document.newMaintainableObject.dataObject.customRuleActionAttributesMap[peopleFlowName]", "Document Name1412916151718sz");
278 waitClearAndType("document.newMaintainableObject.dataObject.agendaItemLineRuleAction.name", "test");
279 }else if(selectValue.equalsIgnoreCase("Validation Action")) {
280 waitAndClickByName("document.newMaintainableObject.dataObject.customRuleActionAttributesMap[actionTypeCode]");
281 waitClearAndType("document.newMaintainableObject.dataObject.customRuleActionAttributesMap[actionMessage]","This is msg");
282 }
283 waitAndClickButtonByExactText("Update Rule");
284 acceptAlertIfPresent();
285 }
286
287 protected void waitClearAndType(String name, String value) throws Exception {
288 clearTextByName(name);
289 waitAndTypeByName(name,value);
290 }
291
292 @Test
293 public void testAgendaEditorAndOrToggleSyncBookmark() throws Exception {
294 testAgendaEditorAndOrToggleSync();
295 passed();
296 }
297
298 @Test
299 public void testAgendaEditorAndOrToggleSyncNav() throws Exception {
300 testAgendaEditorAndOrToggleSync();
301 passed();
302 }
303
304 @Test
305 public void testAgendaEditorAddActionsBookmark() throws Exception {
306 String peopleFlowId = getPeopleFlowId();
307 testAgendaEditorEditRuleAddActionsBlank();
308 testAgendaEditorEditRuleAddActionsKrmsActionResolverType();
309 testAgendaEditorEditRuleAddActionsNotifyPeopleFlow(peopleFlowId);
310 testAgendaEditorEditRuleAddActionsRouteToPeopleFlow(peopleFlowId);
311 testAgendaEditorEditRuleAddActionsValidationAction();
312 passed();
313 }
314
315 @Test
316 public void testAgendaEditorAddActionsNav() throws Exception {
317 String peopleFlowId = getPeopleFlowId();
318 testAgendaEditorEditRuleAddActionsBlank();
319 testAgendaEditorEditRuleAddActionsKrmsActionResolverType();
320 testAgendaEditorEditRuleAddActionsNotifyPeopleFlow(peopleFlowId);
321 testAgendaEditorEditRuleAddActionsRouteToPeopleFlow(peopleFlowId);
322 testAgendaEditorEditRuleAddActionsValidationAction();
323 passed();
324 }
325 }
326