001/**
002 * Copyright 2005-2014 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.main;
017
018import org.kuali.rice.testtools.common.JiraAwareFailable;
019import org.kuali.rice.testtools.selenium.AutomatedFunctionalTestUtils;
020import org.kuali.rice.testtools.selenium.WebDriverUtils;
021import org.openqa.selenium.By;
022
023/**
024 * @author Kuali Rice Team (rice.collab@kuali.org)
025 */
026public class WorkFlowRouteRulesBlanketAppAftBase extends MainTmplMthdSTNavBase{
027
028    /**
029     * ITUtil.PORTAL + "?channelTitle=Routing%20Rules&channelUrl=" + WebDriverUtils.getBaseUrlString() +
030     * "/kr/lookup.do?businessObjectClassName=org.kuali.rice.kew.rule.RuleBaseValues&docFormKey=88888888&returnLocation=" +
031     * ITUtil.PORTAL_URL + ITUtil.HIDE_RETURN_LINK+ "&showMaintenanceLinks=true";
032     */
033    public static final String BOOKMARK_URL = AutomatedFunctionalTestUtils.PORTAL + "?channelTitle=Routing%20Rules&channelUrl=" + WebDriverUtils
034            .getBaseUrlString() +
035            "/kr/lookup.do?businessObjectClassName=org.kuali.rice.kew.rule.RuleBaseValues&docFormKey=88888888&returnLocation=" +
036            AutomatedFunctionalTestUtils.PORTAL_URL + AutomatedFunctionalTestUtils.HIDE_RETURN_LINK+ "&showMaintenanceLinks=true";
037
038    @Override
039    protected String getBookmarkUrl() {
040        return BOOKMARK_URL;
041    }
042
043    /**
044     * {@inheritDoc}
045     * Routing Rules
046     * @return
047     */
048    @Override
049    protected String getLinkLocator() {
050        return "Routing Rules";
051    }
052
053    protected void testWorkFlowRouteRulesBlanketApp() throws Exception {
054        String random = AutomatedFunctionalTestUtils.createUniqueDtsPlusTwoRandomCharsNot9Digits();
055        waitForPageToLoad();
056        Thread.sleep(3000);
057        assertEquals("Kuali Portal Index", getTitle());
058        selectFrameIframePortlet();
059
060        // click on the create new button
061        waitAndClickCreateNew();
062
063        // lookup on the Document Type Name
064        waitAndClickByName("methodToCall.performLookup.(!!org.kuali.rice.kew.doctype.bo.DocumentType!!).(((name:documentTypeName))).((``)).((<>)).(([])).((**)).((^^)).((&&)).((//)).((~~)).(::::;;::::).anchor");
065
066        // type in the name field the text RoutingRuleDocument
067        waitAndTypeByName("name", "RoutingRuleDocument");
068
069        // click the search button
070        waitAndClickSearch();
071
072        // click the return value link
073        waitAndClickReturnValue();
074
075        // lookup on the Rule Template Name
076        waitAndClickByName("methodToCall.performLookup.(!!org.kuali.rice.kew.rule.bo.RuleTemplateBo!!).(((name:ruleTemplateName))).((``)).((<>)).(([])).((**)).((^^)).((&&)).((//)).((~~)).(::::;;::::).anchor");
077
078        // type in the name field the text RuleRoutingTemplate
079        waitAndTypeByName("name", "RuleRoutingTemplate");
080
081        // click the search button
082        waitAndClickSearch();
083
084        // click the return value link
085        waitAndClickReturnValue("testWorkFlowRouteRulesBlanketApp");
086
087        // click the create new button
088        waitAndClickByName("methodToCall.createRule");
089        waitForPageToLoad();
090        String docId = waitForDocId();
091        assertTrue(isElementPresentByName(CANCEL_NAME));
092
093        // type in the Document Overview Description the text Test Routing Rule
094        waitAndTypeByXpath(DOC_DESCRIPTION_XPATH, "Test Routing Rule " + random);
095
096        // click the Force Action checkbox
097        waitAndClickByXpath("//input[@id='document.newMaintainableObject.forceAction']");
098
099        // type in the Description text area the text Test Routing Rule1
100        waitAndTypeByXpath("//textarea[@id='document.newMaintainableObject.description']", "Test Routing Rule1 "
101                + random);
102
103        // type in the Document type name field the text DocumentTypeDocument
104        waitAndTypeByXpath("//input[@id='document.newMaintainableObject.fieldValues(1321~docTypeFullName)']",
105                "DocumentTypeDocument");
106
107        // lookup on Person
108        waitAndClickByName("methodToCall.performLookup.(!!org.kuali.rice.kim.impl.identity.PersonImpl!!).(((principalName:document.newMaintainableObject.add.personResponsibilities.principalName,))).((`document.newMaintainableObject.add.personResponsibilities.principalName:principalName,`)).((<>)).(([])).((**)).((^^)).((&&)).((/personImpl/)).((~~)).(::::;"
109                + getBaseUrlString() + "/kr/lookup.do;::::).anchor15");
110
111        // click the search button
112        waitAndClickSearch();
113
114        // click the return value
115        waitAndClickReturnValue();
116
117        // select from the Action Request ACKNOWLEDGE
118        selectByXpath("//select[@id='document.newMaintainableObject.add.personResponsibilities.actionRequestedCd']",
119                "ACKNOWLEDGE");
120
121        // type in the Priority field the text 1
122        waitAndTypeByXpath("//input[@id='document.newMaintainableObject.add.personResponsibilities.priority']", "1");
123
124        // click the add button
125        waitAndClickByName("methodToCall.addLine.personResponsibilities.(!!org.kuali.rice.kew.rule.PersonRuleResponsibility!!).(:::;15;:::).anchor15");
126        waitForPageToLoad();
127
128        // click Blanket Approve
129        waitAndClickByName(BLANKET_APPROVE_NAME);
130
131        // doc search for the docId
132        waitForPageToLoad();
133        driver.switchTo().defaultContent(); //selectWindow("null");
134        waitAndClickDocSearch();
135        waitForPageToLoad();
136        assertEquals("Kuali Portal Index", getTitle());
137        selectFrameIframePortlet();
138        waitAndTypeByName("documentId", docId);
139        waitAndClickSearch();
140
141        // Expect the doc status to be FINAL
142        waitForElementPresent(By.linkText(docId));
143        if (isElementPresent(By.linkText(docId))) {
144            if (!DOC_STATUS_FINAL.equalsIgnoreCase(getTextByXpath(DOC_STATUS_XPATH_2))) {
145                jiraAwareFail("WorkFlowRouteRulesBlanketApp expected:<[FINAL]> but was " + getTextByXpath(DOC_STATUS_XPATH_2));
146            }
147        } else {
148            assertEquals(docId, getTextByXpath(DOC_ID_XPATH_2));
149            assertEquals(DOC_STATUS_FINAL, getTextByXpath(DOC_STATUS_XPATH_2));
150        }
151    }
152
153    public void testWorkFlowRouteRulesBlanketAppBookmark(JiraAwareFailable failable) throws Exception {
154        testWorkFlowRouteRulesBlanketApp();
155        passed();
156    }
157    public void testWorkFlowRouteRulesBlanketAppNav(JiraAwareFailable failable) throws Exception {
158        testWorkFlowRouteRulesBlanketApp();
159        passed();
160    }
161}