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