001 /**
002 * Copyright 2005-2014 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 package edu.sampleu.admin;
017
018 import org.junit.Test;
019 import org.kuali.rice.testtools.selenium.AutomatedFunctionalTestUtils;
020 import org.kuali.rice.testtools.selenium.WebDriverLegacyITBase;
021 import org.kuali.rice.testtools.selenium.WebDriverUtils;
022 import org.openqa.selenium.By;
023 import org.openqa.selenium.WebElement;
024
025 import java.util.List;
026
027 import static org.junit.Assert.assertEquals;
028
029 /**
030 * @author Kuali Rice Team (rice.collab@kuali.org)
031 */
032 public class DocSearchAft extends WebDriverLegacyITBase {
033
034 public static String BOOKMARK_URL = AutomatedFunctionalTestUtils.PORTAL + "?channelTitle=Document%20Type&channelUrl=" + WebDriverUtils
035 .getBaseUrlString() + "/kr/lookup.do?methodToCall=start&businessObjectClassName=org.kuali.rice.kew.doctype.bo.DocumentType&returnLocation=" + AutomatedFunctionalTestUtils.PORTAL_URL + AutomatedFunctionalTestUtils.HIDE_RETURN_LINK;
036
037 String docId;
038 String parentName;
039
040 @Override
041 protected String getBookmarkUrl() {
042 return BOOKMARK_URL;
043 }
044
045 public void createAndSaveDoc() throws Exception{
046 waitForTitleToEqualKualiPortalIndex();
047 waitAndClickByLinkText("Administration");
048 waitForTitleToEqualKualiPortalIndex();
049 waitAndClickByLinkText("Document Type");
050 waitForTitleToEqualKualiPortalIndex();
051 selectFrame("iframeportlet");
052 waitAndClickByXpath("//img[contains(@alt,'create new')]");
053 waitForElementPresentByXpath("//*[@name='methodToCall.route' and @alt='submit']","save button does not exist on the page");
054 waitForElementPresentByXpath("//div[@id='headerarea']/div/table/tbody/tr[1]/td[1]");
055 docId = driver.findElement(By.xpath("//div[@id='headerarea']/div/table/tbody/tr[1]/td[1]")).getText();
056 waitAndTypeByXpath("//input[@id='document.documentHeader.documentDescription']", "Creating new Document Type");
057 String parentDocType = "//input[@name='methodToCall.performLookup.(!!org.kuali.rice.kew.doctype.bo.DocumentType!!).(((name:document.newMaintainableObject.parentDocType.name,documentTypeId:document.newMaintainableObject.docTypeParentId,))).((`document.newMaintainableObject.parentDocType.name:name,`)).((<>)).(([])).((**)).((^^)).((&&)).((//)).((~~)).(::::;" + getBaseUrlString() + "/kr/lookup.do;::::).anchor4']";
058 waitAndClickByXpath(parentDocType);
059 waitAndClickByXpath("//input[@name='methodToCall.search' and @value='search']");
060 waitForPageToLoad();
061 parentName= driver.findElement(By.xpath("//table[@id='row']/tbody/tr[1]/td[3]")).getText();
062 waitAndClickByLinkText("return value");
063 String docTypeName = "TestDocType " + AutomatedFunctionalTestUtils.DTS;
064 waitForElementPresentByXpath("//input[@id='document.newMaintainableObject.name']");
065 waitAndTypeByXpath("//input[@id='document.newMaintainableObject.name']", docTypeName);
066 waitAndTypeByXpath("//input[@id='document.newMaintainableObject.unresolvedDocHandlerUrl']", "${kr.url}/maintenance.do?methodToCall=docHandler");
067 waitAndTypeByXpath("//input[@id='document.newMaintainableObject.actualNotificationFromAddress']", "NFA");
068 waitAndTypeByXpath("//input[@id='document.newMaintainableObject.label']", "TestDocument Label");
069 waitAndTypeByXpath("//input[@id='document.newMaintainableObject.unresolvedHelpDefinitionUrl']", "default.htm?turl=WordDocuments%2Fdocumenttype.htm");
070 waitAndClickByXpath("//input[@name='methodToCall.save' and @alt='save']");
071 Thread.sleep(2000); // TODO wait for save confirmation
072 checkForIncidentReport();
073 selectTopFrame();
074 }
075 @Test
076 public void testBasicDocSearchBookmark() throws Exception {
077 createAndSaveDoc();
078 waitAndClickByXpath("//a/img[@alt='doc search']");
079 waitForPageToLoad();
080 selectFrame("iframeportlet");
081 waitForElementPresentByXpath("//div[@class='lookupcreatenew']/input[@alt='detailed search']");
082 waitForElementPresentByXpath("//div[@class='lookupcreatenew']/input[@alt='superuser search']");
083 waitForElementPresentByXpath("//div[@class='lookupcreatenew']/input[@alt='clear saved searches search']");
084 waitAndTypeByName("documentTypeName", "DocumentTypeDocument");
085 waitAndTypeByName("initiatorPrincipalName", "admin");
086 waitAndTypeByName("documentId", docId);
087 //waitAndTypeByName("rangeLowerBoundKeyPrefix_dateCreated", "10/01/2010");
088 //waitAndTypeByName("dateCreated", "10/13/2010");
089 waitAndClickMethodToCallSearchButton();
090 selectFrameIframePortlet();
091 assertEquals(docId, waitFor(By.xpath("//table[@id='row']/tbody/tr[1]/td[1]/a")).getText());
092 //Thread.sleep(2000);
093 waitAndClickByXpath("//input[@name='methodToCall.clearValues' and @alt='clear']");
094 assertEquals("", driver.findElement(By.xpath("//input[@name='documentTypeName']")).getAttribute("value"));
095 assertEquals("", driver.findElement(By.xpath("//input[@name='initiatorPrincipalName']")).getAttribute("value"));
096 assertEquals("", driver.findElement(By.xpath("//input[@name='documentId']")).getAttribute("value"));
097 assertEquals("", driver.findElement(By.xpath("//input[@name='rangeLowerBoundKeyPrefix_dateCreated']")).getAttribute("value"));
098 assertEquals("", driver.findElement(By.xpath("//input[@name='dateCreated']")).getAttribute("value"));
099 waitAndClickByXpath("//a[@title='cancel']");
100 }
101
102 @Test
103 public void testBasicFullDocSearchBookmark() throws Exception {
104 waitAndClickByXpath("//a/img[@alt='doc search']");
105 waitForPageToLoad();
106 selectFrame("iframeportlet");
107 waitForElementPresentByXpath("//div[@class='lookupcreatenew']/input[@alt='detailed search']");
108 waitForElementPresentByXpath("//div[@class='lookupcreatenew']/input[@alt='superuser search']");
109 waitForElementPresentByXpath("//div[@class='lookupcreatenew']/input[@alt='clear saved searches search']");
110 waitAndTypeByName("rangeLowerBoundKeyPrefix_dateCreated", "1/1/1900"); // remove default today's date
111 waitAndClickMethodToCallSearchButton();
112 waitForTextPresent("Export options:");
113 }
114
115 @Test
116 public void testDetailedDocSearchBookmark() throws Exception{
117 createAndSaveDoc();
118 waitAndClickByXpath("//a/img[@alt='doc search']");
119 waitForPageToLoad();
120 selectFrame("iframeportlet");
121 waitForElementPresentByXpath("//div[@class='lookupcreatenew']/input[@alt='detailed search']");
122 waitForElementPresentByXpath("//div[@class='lookupcreatenew']/input[@alt='superuser search']");
123 waitForElementPresentByXpath("//div[@class='lookupcreatenew']/input[@alt='clear saved searches search']");
124 waitAndClickByXpath("//div[@class='lookupcreatenew']/input[@alt='detailed search']");
125 waitForElementPresentByXpath("//div[@class='lookupcreatenew']/input[@alt='basic search']", "DocSearchAft.testDetailedDocSearch");
126 //waitAndTypeByName("documentTypeName", parentName);
127 waitAndTypeByName("initiatorPrincipalName", "admin");
128 waitAndTypeByName("documentId", docId);
129 //waitAndTypeByName("rangeLowerBoundKeyPrefix_dateCreated", "10/01/2010");
130 //waitAndTypeByName("dateCreated", "10/13/2010");
131 assertElementPresentByName("approverPrincipalName", "Approver input field is not there in the detailed search");
132 //waitAndTypeByName("approverPrincipalName", "director");
133 assertElementPresentByName("viewerPrincipalName", "Viewer input field is not there in the detailed search");
134 //waitAndTypeByName("viewerPrincipalName", "superviser");
135 assertElementPresentByXpath("//select[@id='statusCode']", "Document Status select field is not there in the detailed search");
136 selectByXpath("//select[@id='statusCode']", "- SAVED");
137 waitAndClickMethodToCallSearchButton();
138 assertTextNotPresent("No values match this search.");
139 assertTrue(driver.findElement(By.id("row")).getText().contains("SAVED"));
140 assertElementPresentByXpath("//table[@id='row']/tbody/tr[1]/td[contains(a,'admin')]");
141 //Thread.sleep(2000);
142 waitAndClickByXpath("//input[@name='methodToCall.clearValues' and @alt='clear']");
143 //assertEquals("", driver.findElement(By.xpath("//input[@name='documentTypeName']")).waitAndGetAttribute("value"));
144 assertEquals("", driver.findElement(By.xpath("//input[@name='initiatorPrincipalName']")).getAttribute("value"));
145 //assertEquals("", driver.findElement(By.xpath("//input[@name='documentId']")).waitAndGetAttribute("value"));
146 //assertEquals("", driver.findElement(By.xpath("//input[@name='rangeLowerBoundKeyPrefix_dateCreated']")).waitAndGetAttribute("value"));
147 //assertEquals("", driver.findElement(By.xpath("//input[@name='dateCreated']")).waitAndGetAttribute("value"));
148 waitAndClickByXpath("//a[@title='cancel']");
149 passed();
150 }
151
152 @Test
153 public void testSuperUserSearchBookmark() throws Exception{
154 createAndSaveDoc();
155 waitAndClickByXpath("//a/img[@alt='doc search']");
156 waitForPageToLoad();
157 selectFrame("iframeportlet");
158 waitForElementPresentByXpath("//div[@class='lookupcreatenew']/input[@alt='detailed search']");
159 waitForElementPresentByXpath("//div[@class='lookupcreatenew']/input[@alt='superuser search']");
160 waitForElementPresentByXpath("//div[@class='lookupcreatenew']/input[@alt='clear saved searches search']");
161 waitAndClickByXpath("//div[@class='lookupcreatenew']/input[@alt='superuser search']");
162 waitForElementPresentByXpath("//div[@class='lookupcreatenew']/input[@alt='non-superuser search']",
163 "DocSearchAft.testSuperUserSearch");
164 waitAndClickMethodToCallSearchButton();
165 Thread.sleep(3000);
166 selectFrameIframePortlet();
167 waitAndClickByXpath("//table[@id='row']/tbody/tr[1]/td[1]/a");
168 selectTopFrame();
169 Thread.sleep(3000);
170 switchToWindow("Kuali :: Superuser Document Service");
171 waitForPageToLoad();
172 //Thread.sleep(4000);
173
174 waitAndClickByXpath("//input[@src='images/buttonsmall_complete.gif']");
175 waitForElementPresentByName("methodToCall.approve", "approve button does not exist on the page");
176 assertElementPresentByName("methodToCall.disapprove", "disapprove button does not exist on the page");
177 assertElementPresentByName("methodToCall.cancel", "cancel button does not exist on the page");
178 waitAndClickByName("methodToCall.approve", "approve button does not exist on the page");
179 jGrowl("Click Cancel Button");
180 waitAndClickByXpath("//a[@href='DocumentSearch.do']/img[@alt='cancel']");
181 waitAndClickMethodToCallSearchButton();
182 waitForPageToLoad();
183 assertEquals("FINAL", driver.findElement(By.xpath("//table[@id='row']/tbody/tr[1]/td[4]")).getText());
184 passed();
185 }
186
187 protected void waitAndClickMethodToCallSearchButton() throws InterruptedException {
188 jGrowl("Click Search Button");
189 waitAndClickByXpath("//input[@name='methodToCall.search' and @alt='search']");
190 }
191
192 @Test
193 public void testClearSavedSearchesBookmark() throws Exception{
194 waitAndClickByXpath("//a/img[@alt='doc search']");
195 waitForPageToLoad();
196 selectFrame("iframeportlet");
197 waitForElementPresentByXpath("//div[@class='lookupcreatenew']/input[@alt='detailed search']");
198 waitForElementPresentByXpath("//div[@class='lookupcreatenew']/input[@alt='superuser search']");
199 waitForElementPresentByXpath("//div[@class='lookupcreatenew']/input[@alt='clear saved searches search']");
200 waitAndClickByXpath("//div[@class='lookupcreatenew']/input[@alt='clear saved searches search']");
201 waitForPageToLoad();
202 WebElement select1 = findElement(By.xpath("//select[@id='savedSearchToLoadAndExecute']"));
203 List<WebElement> options = select1.findElements(By.tagName("option"));
204 int count= options.size();
205 assertEquals(5,count);
206 passed();
207 }
208
209 @Test
210 public void testAjaxPageReloadBookmark() throws Exception{
211 waitAndClickByXpath("//a/img[@alt='doc search']");
212 waitForPageToLoad();
213 selectFrame("iframeportlet");
214 waitForElementPresentByXpath("//div[@class='lookupcreatenew']/input[@alt='detailed search']");
215 waitForElementPresentByXpath("//div[@class='lookupcreatenew']/input[@alt='superuser search']");
216 waitForElementPresentByXpath("//div[@class='lookupcreatenew']/input[@alt='clear saved searches search']");
217 waitForElementPresentByXpath("//select[@id='savedSearchToLoadAndExecute']");
218 waitAndTypeByName("documentTypeName", "KualiNotification");
219 fireEvent("documentTypeName", "blur");
220 waitForElementPresentByName("documentAttribute.notificationContentType");
221 assertElementPresentByName("documentAttribute.notificationChannel");
222 assertElementPresentByName("documentAttribute.notificationProducer");
223 assertElementPresentByName("documentAttribute.notificationPriority");
224 assertElementPresentByName("documentAttribute.notificationRecipients");
225 assertElementPresentByName("documentAttribute.notificationSenders");
226 waitAndClickByXpath("//a[@title='cancel']");
227 passed();
228 }
229 }