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