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