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     */
016    package edu.sampleu.travel;
017    
018    import com.thoughtworks.selenium.SeleneseTestBase;
019    import org.junit.Assert;
020    import org.kuali.rice.testtools.common.JiraAwareFailable;
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.Alert;
025    import org.openqa.selenium.By;
026    import org.openqa.selenium.WebElement;
027    
028    /**
029     * Tests the Component section in Rice.
030     *
031     * @author Kuali Rice Team (rice.collab@kuali.org)
032     */
033    public abstract class InquiryAftBase extends WebDriverLegacyITBase {
034    
035        /**
036         * ITUtil.PORTAL + "?channelTitle=Travel%20Account%20Lookup&channelUrl="
037         * + WebDriverUtils.getBaseUrlString() + ITUtil.KRAD_LOOKUP_METHOD
038         * +"edu.sampleu.travel.bo.TravelAccount&returnLocation="
039         * + ITUtil.PORTAL_URL + ITUtil.HIDE_RETURN_LINK + ITUtil.SHOW_MAINTENANCE_LINKS
040         */
041        public static final String BOOKMARK_URL = AutomatedFunctionalTestUtils.PORTAL
042                + "?channelTitle=Travel%20Account%20Lookup&channelUrl="
043                + WebDriverUtils.getBaseUrlString() + AutomatedFunctionalTestUtils.KRAD_LOOKUP_METHOD
044                + "edu.sampleu.travel.bo.TravelAccount"
045                + "&returnLocation=" + AutomatedFunctionalTestUtils.PORTAL_URL + AutomatedFunctionalTestUtils.HIDE_RETURN_LINK + AutomatedFunctionalTestUtils.SHOW_MAINTENANCE_LINKS;
046    
047        /**
048         * //*[contains(button,"Search")]/button
049         */
050        public static final String SEARCH_BUTTON_XPATH ="//div[contains(button, 'Search')]/button[3]";
051        
052        /**
053         * lookupCriteria
054         */
055        public static final String CRITERIA_NAME="lookupCriteria";
056        
057        /**
058         * //iframe[@class='fancybox-iframe']
059         */
060        public static final String FANCYBOX_IFRAME_XPATH="//iframe[@class='fancybox-iframe']";
061        
062        protected void navigation() throws Exception {
063            waitAndClickKRAD();
064            //waitAndClickByLinkText(TRAVEL_ACCOUNT_LOOKUP_LINK_TEXT);
065            waitAndClickByXpath("(//a[contains(text(),'Travel Account Lookup')])[3]");
066        }
067    
068        protected void testInquiryNav(JiraAwareFailable failable) throws Exception {
069            navigation();
070            testInquiry();
071            passed();
072        }
073    
074        protected void testInquiryBookmark(JiraAwareFailable failable) throws Exception {
075            testInquiry();
076            passed();
077        }
078    
079        protected void testInquiry() throws Exception {
080            selectFrameIframePortlet();
081            waitAndTypeByName(CRITERIA_NAME+"[number]", "a1");
082            waitAndClickByXpath("//*[@alt='Direct Inquiry']");
083            selectTopFrame();
084            Thread.sleep(5000);
085            WebElement iframe1 = driver.findElement(By.xpath(FANCYBOX_IFRAME_XPATH));
086            driver.switchTo().frame(iframe1);
087            SeleneseTestBase.assertEquals("Travel Account Inquiry", getTextByXpath("//h1/span").trim());
088            assertElementPresentByLinkText("a1");
089            selectTopFrame();
090            waitAndClickByXpath("//div[@class='fancybox-item fancybox-close']");
091            selectFrameIframePortlet();
092            waitAndClickByXpath("//button[contains(text(),'Clear Values')]");
093    
094            //-----------------------------Code will not work as page has freemarker exceptions------------------------
095            Thread.sleep(2000);
096            waitAndClickByXpath("//*[@alt='Direct Inquiry']");
097            Alert a1 = driver.switchTo().alert();
098            Assert.assertEquals("Please enter a value in the appropriate field.", a1.getText());
099            a1.accept();
100            switchToWindow("null");
101            selectFrameIframePortlet();
102    
103            //No Direct Inquiry Option for Fiscal Officer.
104            waitAndTypeByName(CRITERIA_NAME+"[foId]", "1");
105            waitAndClickByXpath("//*[@id='u229']");
106            selectTopFrame();
107            Thread.sleep(5000);
108            WebElement iframe2 = driver.findElement(By.xpath(FANCYBOX_IFRAME_XPATH));
109            driver.switchTo().frame(iframe2);
110            Assert.assertEquals("Fiscal Officer Lookup", getTextByXpath("//h1/span").trim());
111            Assert.assertEquals("1", waitAndGetAttributeByName(CRITERIA_NAME + "[id]", "value"));
112            waitAndClickByXpath(SEARCH_BUTTON_XPATH);
113            selectFrameIframePortlet();
114            selectOptionByName(CRITERIA_NAME+"[extension.accountTypeCode]", "CAT");
115            waitAndClickByXpath("//fieldset[@id='u232_fieldset']/input[@alt='Search Field']");
116            selectTopFrame();
117            Thread.sleep(5000);
118            WebElement iframe3 = driver.findElement(By.xpath(FANCYBOX_IFRAME_XPATH));
119            driver.switchTo().frame(iframe3);
120            Assert.assertEquals("Travel Account Type Lookup", getTextByXpath("//h1/span").trim());
121            Assert.assertEquals("CAT", waitAndGetAttributeByName(CRITERIA_NAME + "[accountTypeCode]", "value"));
122            waitAndClickByXpath(SEARCH_BUTTON_XPATH);
123            selectFrameIframePortlet();
124        }
125    }