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.samplu.admin.test; 018 019 import static org.junit.Assert.assertEquals; 020 import static org.junit.Assert.assertTrue; 021 022 import java.util.List; 023 024 import org.junit.Assert; 025 import org.junit.Ignore; 026 import org.junit.Test; 027 import org.openqa.selenium.By; 028 import org.openqa.selenium.WebElement; 029 030 import edu.samplu.common.ITUtil; 031 import edu.samplu.common.WebDriverLegacyITBase; 032 033 /** 034 * @author Kuali Rice Team (rice.collab@kuali.org) 035 */ 036 public class DocSearchWDIT extends WebDriverLegacyITBase { 037 038 String docId; 039 String parentName; 040 041 @Override 042 public void fail(String message) { 043 Assert.fail(message); 044 } 045 046 @Override 047 public String getTestUrl(){ 048 return ITUtil.PORTAL; 049 } 050 051 public void createAndSaveDoc() throws Exception{ 052 waitForTitleToEqualKualiPortalIndex(); 053 waitAndClickByLinkText("Administration"); 054 waitForTitleToEqualKualiPortalIndex(); 055 waitAndClickByLinkText("Document Type"); 056 waitForTitleToEqualKualiPortalIndex(); 057 selectFrame("iframeportlet"); 058 waitAndClickByXpath("//img[contains(@alt,'create new')]"); 059 waitForPageToLoad(); 060 Thread.sleep(2000); 061 assertElementPresentByXpath("//*[@name='methodToCall.route' and @alt='submit']","save button does not exist on the page"); 062 waitForElementPresentByXpath("//div[@id='headerarea']/div/table/tbody/tr[1]/td[1]"); 063 docId = driver.findElement(By.xpath("//div[@id='headerarea']/div/table/tbody/tr[1]/td[1]")).getText(); 064 waitAndTypeByXpath("//input[@id='document.documentHeader.documentDescription']", "Creating new Document Type"); 065 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']"; 066 waitAndClickByXpath(parentDocType); 067 waitForPageToLoad(); 068 //Thread.sleep(2000); 069 waitAndClickByXpath("//input[@name='methodToCall.search' and @value='search']"); 070 waitForPageToLoad(); 071 parentName= driver.findElement(By.xpath("//table[@id='row']/tbody/tr[1]/td[3]")).getText(); 072 waitAndClickByLinkText("return value"); 073 String docTypeName = "TestDocType " + ITUtil.DTS; 074 waitForElementPresentByXpath("//input[@id='document.newMaintainableObject.name']"); 075 waitAndTypeByXpath("//input[@id='document.newMaintainableObject.name']", docTypeName); 076 waitAndTypeByXpath("//input[@id='document.newMaintainableObject.unresolvedDocHandlerUrl']", "${kr.url}/maintenance.do?methodToCall=docHandler"); 077 waitAndTypeByXpath("//input[@id='document.newMaintainableObject.actualNotificationFromAddress']", "NFA"); 078 waitAndTypeByXpath("//input[@id='document.newMaintainableObject.label']", "TestDocument Label"); 079 waitAndTypeByXpath("//input[@id='document.newMaintainableObject.unresolvedHelpDefinitionUrl']", "default.htm?turl=WordDocuments%2Fdocumenttype.htm"); 080 waitAndClickByXpath("//input[@name='methodToCall.save' and @alt='save']"); 081 // TODO wait for save confirmation 082 //checkForIncidentReport(); 083 selectTopFrame(); 084 } 085 @Test 086 public void testBasicDocSearch() throws Exception { 087 createAndSaveDoc(); 088 waitAndClickByXpath("//a/img[@alt='doc search']"); 089 waitForPageToLoad(); 090 selectFrame("iframeportlet"); 091 waitForElementPresentByXpath("//div[@class='lookupcreatenew']/input[@alt='detailed search']"); 092 waitForElementPresentByXpath("//div[@class='lookupcreatenew']/input[@alt='superuser search']"); 093 waitForElementPresentByXpath("//div[@class='lookupcreatenew']/input[@alt='clear saved searches search']"); 094 waitAndTypeByName("documentTypeName", parentName); 095 waitAndTypeByName("initiatorPrincipalName", "admin"); 096 waitAndTypeByName("documentId", docId); 097 //waitAndTypeByName("rangeLowerBoundKeyPrefix_dateCreated", "10/01/2010"); 098 //waitAndTypeByName("dateCreated", "10/13/2010"); 099 waitAndClickByXpath("//input[@name='methodToCall.search' and @alt='search']"); 100 waitForPageToLoad(); 101 assertEquals(docId, driver.findElement(By.xpath("//table[@id='row']/tbody/tr[1]/td[1]/a")).getText()); 102 //Thread.sleep(2000); 103 waitAndClickByXpath("//input[@name='methodToCall.clearValues' and @alt='clear']"); 104 assertEquals("", driver.findElement(By.xpath("//input[@name='documentTypeName']")).getAttribute("value")); 105 assertEquals("", driver.findElement(By.xpath("//input[@name='initiatorPrincipalName']")).getAttribute("value")); 106 assertEquals("", driver.findElement(By.xpath("//input[@name='documentId']")).getAttribute("value")); 107 assertEquals("", driver.findElement(By.xpath("//input[@name='rangeLowerBoundKeyPrefix_dateCreated']")).getAttribute("value")); 108 assertEquals("", driver.findElement(By.xpath("//input[@name='dateCreated']")).getAttribute("value")); 109 waitAndClickByXpath("//a[@title='cancel']"); 110 waitForPageToLoad(); 111 passed(); 112 } 113 114 @Ignore // TODO fix 115 @Test 116 public void testDetailedDocSearch() 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 waitForPageToLoad(); 126 assertElementPresentByXpath("//div[@class='lookupcreatenew']/input[@alt='basic search']"); 127 //waitAndTypeByName("documentTypeName", parentName); 128 waitAndTypeByName("initiatorPrincipalName", "admin"); 129 //waitAndTypeByName("documentId", 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 waitAndClickByXpath("//input[@name='methodToCall.search' and @alt='search']"); 139 waitForPageToLoad(); 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']")).getAttribute("value")); 145 assertEquals("", driver.findElement(By.xpath("//input[@name='initiatorPrincipalName']")).getAttribute("value")); 146 //assertEquals("", driver.findElement(By.xpath("//input[@name='documentId']")).getAttribute("value")); 147 //assertEquals("", driver.findElement(By.xpath("//input[@name='rangeLowerBoundKeyPrefix_dateCreated']")).getAttribute("value")); 148 //assertEquals("", driver.findElement(By.xpath("//input[@name='dateCreated']")).getAttribute("value")); 149 waitAndClickByXpath("//a[@title='cancel']"); 150 waitForPageToLoad(); 151 passed(); 152 } 153 154 @Test 155 public void testSuperUserSearch() throws Exception{ 156 //createAndSaveDoc(); 157 waitAndClickByXpath("//a/img[@alt='doc search']"); 158 waitForPageToLoad(); 159 selectFrame("iframeportlet"); 160 waitForElementPresentByXpath("//div[@class='lookupcreatenew']/input[@alt='detailed search']"); 161 waitForElementPresentByXpath("//div[@class='lookupcreatenew']/input[@alt='superuser search']"); 162 waitForElementPresentByXpath("//div[@class='lookupcreatenew']/input[@alt='clear saved searches search']"); 163 waitAndClickByXpath("//div[@class='lookupcreatenew']/input[@alt='superuser search']"); 164 waitForPageToLoad(); 165 assertElementPresentByXpath("//div[@class='lookupcreatenew']/input[@alt='non-superuser search']"); 166 waitAndClickByXpath("//input[@name='methodToCall.search' and @alt='search']"); 167 waitForPageToLoad(); 168 waitAndClickByXpath("//table[@id='row']/tbody/tr[1]/td[1]/a"); 169 selectTopFrame(); 170 Thread.sleep(3000); 171 switchToWindow("Kuali :: Superuser Document Service"); 172 waitForPageToLoad(); 173 //Thread.sleep(4000); 174 175 waitAndClickByXpath("//input[@src='images/buttonsmall_complete.gif']"); 176 waitForPageToLoad(); 177 assertElementPresentByName("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 waitForPageToLoad(); 182 waitAndClickByXpath("//a[@href='DocumentSearch.do']/img[@alt='cancel']"); 183 waitForPageToLoad(); 184 waitAndClickByXpath("//input[@name='methodToCall.search' and @alt='search']"); 185 waitForPageToLoad(); 186 assertEquals("FINAL", driver.findElement(By.xpath("//table[@id='row']/tbody/tr[1]/td[4]")).getText()); 187 passed(); 188 } 189 190 @Test 191 public void testClearSavedSearches() throws Exception{ 192 waitAndClickByXpath("//a/img[@alt='doc search']"); 193 waitForPageToLoad(); 194 selectFrame("iframeportlet"); 195 waitForElementPresentByXpath("//div[@class='lookupcreatenew']/input[@alt='detailed search']"); 196 waitForElementPresentByXpath("//div[@class='lookupcreatenew']/input[@alt='superuser search']"); 197 waitForElementPresentByXpath("//div[@class='lookupcreatenew']/input[@alt='clear saved searches search']"); 198 waitAndClickByXpath("//div[@class='lookupcreatenew']/input[@alt='clear saved searches search']"); 199 waitForPageToLoad(); 200 WebElement select1 = driver.findElement(By.xpath("//select[@id='savedSearchToLoadAndExecute']")); 201 List<WebElement> options = select1.findElements(By.tagName("option")); 202 int count= options.size(); 203 assertEquals(5,count); 204 passed(); 205 } 206 207 @Test 208 public void testAjaxPageReload() throws Exception{ 209 waitAndClickByXpath("//a/img[@alt='doc search']"); 210 waitForPageToLoad(); 211 selectFrame("iframeportlet"); 212 waitForElementPresentByXpath("//div[@class='lookupcreatenew']/input[@alt='detailed search']"); 213 waitForElementPresentByXpath("//div[@class='lookupcreatenew']/input[@alt='superuser search']"); 214 waitForElementPresentByXpath("//div[@class='lookupcreatenew']/input[@alt='clear saved searches search']"); 215 waitForElementPresentByXpath("//select[@id='savedSearchToLoadAndExecute']"); 216 waitAndTypeByName("documentTypeName", "KualiNotification"); 217 Thread.sleep(2000); 218 fireEvent("documentTypeName", "blur"); 219 Thread.sleep(1000); 220 assertElementPresentByName("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 }