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    
021    import java.util.List;
022    
023    import org.junit.Assert;
024    import org.junit.Test;
025    import org.openqa.selenium.By;
026    import org.openqa.selenium.WebElement;
027    
028    import edu.samplu.common.ITUtil;
029    import edu.samplu.common.WebDriverLegacyITBase;
030    
031    
032    /**
033     * @author Kuali Rice Team (rice.collab@kuali.org)
034     */
035    public 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            //checkForIncidentReport();
081            selectTopFrame();
082        }
083        @Test
084        public void testBasicDocSearch() throws Exception {
085            createAndSaveDoc();
086            waitAndClickByXpath("//a/img[@alt='doc search']");
087            waitForPageToLoad();
088            selectFrame("iframeportlet");
089            waitForElementPresentByXpath("//div[@class='lookupcreatenew']/input[@alt='detailed search']");
090            waitForElementPresentByXpath("//div[@class='lookupcreatenew']/input[@alt='superuser search']");
091            waitForElementPresentByXpath("//div[@class='lookupcreatenew']/input[@alt='clear saved searches search']");
092            waitAndTypeByName("documentTypeName", parentName);
093            waitAndTypeByName("initiatorPrincipalName", "admin");
094            waitAndTypeByName("documentId", docId);
095            //waitAndTypeByName("rangeLowerBoundKeyPrefix_dateCreated", "10/01/2010");
096            //waitAndTypeByName("dateCreated", "10/13/2010");
097            waitAndClickByXpath("//input[@name='methodToCall.search' and @alt='search']");
098            waitForPageToLoad();
099            assertEquals(docId, driver.findElement(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            
110        }
111        
112        @Test
113        public void testDetailedDocSearch() throws Exception{
114            //createAndSaveDoc();
115            waitAndClickByXpath("//a/img[@alt='doc search']");
116            waitForPageToLoad();
117            selectFrame("iframeportlet");
118            waitForElementPresentByXpath("//div[@class='lookupcreatenew']/input[@alt='detailed search']");
119            waitForElementPresentByXpath("//div[@class='lookupcreatenew']/input[@alt='superuser search']");
120            waitForElementPresentByXpath("//div[@class='lookupcreatenew']/input[@alt='clear saved searches search']");
121            waitAndClickByXpath("//div[@class='lookupcreatenew']/input[@alt='detailed search']");
122            waitForPageToLoad();
123            assertElementPresentByXpath("//div[@class='lookupcreatenew']/input[@alt='basic search']");
124            //waitAndTypeByName("documentTypeName", parentName);
125            waitAndTypeByName("initiatorPrincipalName", "admin");
126            //waitAndTypeByName("documentId", docId);
127            //waitAndTypeByName("rangeLowerBoundKeyPrefix_dateCreated", "10/01/2010");
128            //waitAndTypeByName("dateCreated", "10/13/2010");
129            assertElementPresentByName("approverPrincipalName", "Approver input field is not there in the detailed search");
130            //waitAndTypeByName("approverPrincipalName", "director");
131            assertElementPresentByName("viewerPrincipalName", "Viewer input field is not there in the detailed search");
132            //waitAndTypeByName("viewerPrincipalName", "superviser");
133            assertElementPresentByXpath("//select[@id='statusCode']", "Document Status select field is not there in the detailed search");
134            selectByXpath("//select[@id='statusCode']", "- SAVED");
135            waitAndClickByXpath("//input[@name='methodToCall.search' and @alt='search']");
136            waitForPageToLoad();
137            assertEquals("SAVED", driver.findElement(By.xpath("//table[@id='row']/tbody/tr[1]/td[4]")).getText());
138            assertElementPresentByXpath("//table[@id='row']/tbody/tr[1]/td[contains(a,'admin')]");
139            //Thread.sleep(2000);
140            waitAndClickByXpath("//input[@name='methodToCall.clearValues' and @alt='clear']");
141            //assertEquals("", driver.findElement(By.xpath("//input[@name='documentTypeName']")).getAttribute("value"));
142            assertEquals("", driver.findElement(By.xpath("//input[@name='initiatorPrincipalName']")).getAttribute("value"));
143            //assertEquals("", driver.findElement(By.xpath("//input[@name='documentId']")).getAttribute("value"));
144            //assertEquals("", driver.findElement(By.xpath("//input[@name='rangeLowerBoundKeyPrefix_dateCreated']")).getAttribute("value"));
145            //assertEquals("", driver.findElement(By.xpath("//input[@name='dateCreated']")).getAttribute("value"));
146            waitAndClickByXpath("//a[@title='cancel']");
147            waitForPageToLoad();
148        }
149        
150        @Test
151        public void testSuperUserSearch() throws Exception{
152            //createAndSaveDoc();
153            waitAndClickByXpath("//a/img[@alt='doc search']");
154            waitForPageToLoad();
155            selectFrame("iframeportlet");
156            waitForElementPresentByXpath("//div[@class='lookupcreatenew']/input[@alt='detailed search']");
157            waitForElementPresentByXpath("//div[@class='lookupcreatenew']/input[@alt='superuser search']");
158            waitForElementPresentByXpath("//div[@class='lookupcreatenew']/input[@alt='clear saved searches search']");
159            waitAndClickByXpath("//div[@class='lookupcreatenew']/input[@alt='superuser search']");
160            waitForPageToLoad();
161            assertElementPresentByXpath("//div[@class='lookupcreatenew']/input[@alt='non-superuser search']");
162            waitAndClickByXpath("//input[@name='methodToCall.search' and @alt='search']");
163            waitForPageToLoad();
164            waitAndClickByXpath("//table[@id='row']/tbody/tr[1]/td[1]/a");
165            selectTopFrame();
166            Thread.sleep(3000);
167            switchToWindow("Kuali :: Superuser Document Service");
168            waitForPageToLoad();
169            //Thread.sleep(4000);
170            
171            assertElementPresentByName("methodToCall.actionRequestApprove.(((U))).((`admin`)).(([])).((*2369*)).((%complete%))", "complete button does not exist on the page");
172            waitForElementPresentByName("methodToCall.actionRequestApprove.(((U))).((`admin`)).(([])).((*2369*)).((%complete%))");
173            waitAndClickByName("methodToCall.actionRequestApprove.(((U))).((`admin`)).(([])).((*2369*)).((%complete%))");
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            
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        }
203        
204        @Test
205        public void testAjaxPageReload() throws Exception{
206            waitAndClickByXpath("//a/img[@alt='doc search']");
207            waitForPageToLoad();
208            selectFrame("iframeportlet");
209            waitForElementPresentByXpath("//div[@class='lookupcreatenew']/input[@alt='detailed search']");
210            waitForElementPresentByXpath("//div[@class='lookupcreatenew']/input[@alt='superuser search']");
211            waitForElementPresentByXpath("//div[@class='lookupcreatenew']/input[@alt='clear saved searches search']");
212            waitForElementPresentByXpath("//select[@id='savedSearchToLoadAndExecute']");
213            waitAndTypeByName("documentTypeName", "KualiNotification");
214            Thread.sleep(2000);
215            fireEvent("documentTypeName", "blur");
216            waitForPageToLoad();
217            assertElementPresentByName("documentAttribute.notificationContentType");
218            assertElementPresentByName("documentAttribute.notificationChannel");
219            assertElementPresentByName("documentAttribute.notificationProducer");
220            assertElementPresentByName("documentAttribute.notificationPriority");
221            assertElementPresentByName("documentAttribute.notificationRecipients");
222            assertElementPresentByName("documentAttribute.notificationSenders");
223            waitAndClickByXpath("//a[@title='cancel']");
224        }
225        
226    }