001 package edu.samplu.admin.config.namespace.pending;
002
003 import edu.samplu.admin.test.AdminTmplMthdSTNavBase;
004 import edu.samplu.common.ITUtil;
005 import org.apache.commons.lang.RandomStringUtils;
006
007 /**
008 * @author Kuali Rice Team (rice.collab@kuali.org)
009 */
010
011 public abstract class PendingBase extends AdminTmplMthdSTNavBase {
012 /**
013 * methodToCall.insertAdHocRoutePerson
014 */
015 protected static final String ADD_PERSON_ELEMENT_NAME = "methodToCall.insertAdHocRoutePerson";
016
017 /**
018 * newAdHocRoutePerson.id
019 */
020 protected static final String ADD_PERSON_TEXT_ELEMENT_NAME = "newAdHocRoutePerson.id";
021
022 /**
023 * methodToCall.toggleTab.tabAdHocRecipients
024 */
025 protected static final String DOCUMENT_AD_HOC_RECIPIENTS_TOGGLE = "methodToCall.toggleTab.tabAdHocRecipients";
026 /**
027 * document.documentHeader.documentDescription
028 */
029 protected static final String DOCUMENT_DESCRIPTION_NAME = "document.documentHeader.documentDescription";
030
031 /**
032 * document.newMaintainableObject.code
033 */
034 protected static final String DOCUMENT_CODE_NAME = "document.newMaintainableObject.code";
035
036 /**
037 * document.newMaintainableObject.name
038 */
039 protected static final String DOCUMENT_NAME = "document.newMaintainableObject.name";
040
041 /**
042 * document.newMaintainableObject.applicationId
043 */
044 protected static final String DOCUMENT_APPLICATIONID_NAME = "document.newMaintainableObject.applicationId";
045
046 /**
047 * methodToCall.performLookup.(!!org.kuali.rice.kim.impl.group.GroupBo!!).(((namespaceCode:newAdHocRouteWorkgroup.recipientNamespaceCode,name:newAdHocRouteWorkgroup.recipientName))).((`newAdHocRouteWorkgroup.recipientNamespaceCode:namespaceCode,newAdHocRouteWorkgroup.recipientName:name`)).((<>)).(([])).((**)).((^^)).((&&)).((//)).((~~)).(::::;;::::).anchor
048 */
049 protected static final String NAME_LOOKUP_COMPONENT_NAME ="methodToCall.performLookup.(!!org.kuali.rice.kim.impl.group.GroupBo!!).(((namespaceCode:newAdHocRouteWorkgroup.recipientNamespaceCode,name:newAdHocRouteWorkgroup.recipientName))).((`newAdHocRouteWorkgroup.recipientNamespaceCode:namespaceCode,newAdHocRouteWorkgroup.recipientName:name`)).((<>)).(([])).((**)).((^^)).((&&)).((//)).((~~)).(::::;;::::).anchor";
050
051 /**
052 * newAdHocRoutePerson.actionRequested
053 */
054 protected static final String NEW_AD_HOC_ROUTE_PERSON_ACTION_REQUESTED = "newAdHocRoutePerson.actionRequested";
055
056 /**
057 * methodToCall.route
058 */
059 protected static final String SUBMIT_NAME = "methodToCall.route";
060
061 protected void assertSuperGroup(String docId) throws InterruptedException {
062 // second checkbox (APPROVED)
063 waitAndClick("#tab-SuperUserAction-div > div:nth-child(2) > table:nth-child(2) > tbody:nth-child(1) > tr:nth-child(3) > td:nth-child(1) > input:nth-child(1)");
064 waitAndTypeByName("superUserAnnotation","test suaction");
065 waitAndClickByName("methodToCall.takeSuperUserActions");
066 if(!isTextPresent("Group1")) {
067 assertTextPresent("superuser approved in Document " + docId);
068 } else {
069 fail("Super User Approve functionality may not be working.");
070 }
071 }
072 /**
073 * {@inheritDoc}
074 * Namespace
075 * @return
076 */
077 @Override
078 protected String getLinkLocator() {
079 return "Namespace";
080 }
081
082 protected void fillInAddAdHocPersons(String[][] personsActions) throws Exception {
083 waitAndClickByName(DOCUMENT_AD_HOC_RECIPIENTS_TOGGLE);
084
085 for (String[] personAction: personsActions) {
086 waitAndTypeByName(ADD_PERSON_TEXT_ELEMENT_NAME, personAction[0]);
087 if (personAction.length > 1) {
088 selectByName(NEW_AD_HOC_ROUTE_PERSON_ACTION_REQUESTED, personAction[1]);
089 }
090 waitAndClickByName(ADD_PERSON_ELEMENT_NAME);
091 Thread.sleep(1000);
092 }
093 }
094
095 protected void fillInAdHocGroups(String[][] groupsActions) throws Exception {
096 waitAndClickByName(DOCUMENT_AD_HOC_RECIPIENTS_TOGGLE);
097 for (String[] groupAction: groupsActions) {
098 waitAndClickByName(NAME_LOOKUP_COMPONENT_NAME);
099 waitAndTypeByName("name", groupAction[0]);
100 waitAndClickByXpath(SEARCH_XPATH);
101 waitAndClickByLinkText("return value");
102 if (groupAction.length > 1) {
103 selectByName("newAdHocRouteWorkgroup.actionRequested", groupAction[1]);
104 }
105 waitAndClickByName("methodToCall.insertAdHocRouteWorkgroup");
106 Thread.sleep(1000);
107 }
108 }
109
110 protected void fillInNamespaceOverview(String descBase, String codeNameBase, String nameBase, String appId) throws Exception {
111 selectFrameIframePortlet();
112 waitAndCreateNew();
113 waitAndTypeByName(DOCUMENT_DESCRIPTION_NAME, descBase + " " + ITUtil.createUniqueDtsPlusTwoRandomCharsNot9Digits());
114 String randomFour = RandomStringUtils.randomAlphabetic(4).toLowerCase();
115 waitAndTypeByName(DOCUMENT_CODE_NAME, codeNameBase + randomFour);
116 waitAndTypeByName(DOCUMENT_NAME, nameBase + randomFour);
117 waitAndTypeByName(DOCUMENT_APPLICATIONID_NAME, appId);
118 }
119
120 protected String submitAndLookupDoc() throws InterruptedException {
121 waitAndClickByName(SUBMIT_NAME);
122 String docId= waitForDocId();
123 switchToWindow("Kuali Portal Index");
124 waitAndClickDocSearch();
125 selectFrameIframePortlet();
126 waitAndTypeByName("documentId",docId);
127 waitAndClickByXpath(SEARCH_XPATH);
128 if(!isTextPresent("No values match this search.")) {
129 waitAndClickByLinkText(docId);
130 switchToWindow("Kuali :: Namespace");
131 } else {
132 fail("Previous Document may have routing problem so the latest Document is not able to submit correctly.");
133 }
134 return docId;
135 }
136
137 protected void assertSuperPerson(String user, String action, String docId) throws InterruptedException {
138 waitAndClickByName("selectedActionRequests");
139 waitAndTypeByName("superUserAnnotation","test suaction");
140 waitAndClickByName("methodToCall.takeSuperUserActions");
141
142 Thread.sleep(1000);
143 if(!isTextPresent(user)) {
144 assertTextPresent("superuser " + action + " in Document " + docId);
145 } else {
146 fail("Super User Approve functionality may not be working.");
147 }
148 }
149 }