001    /**
002     * Copyright 2005-2013 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.samplu.travel.krad.test;
017    
018    import com.thoughtworks.selenium.SeleneseTestBase;
019    import org.kuali.rice.testtools.selenium.SmokeTestBase;
020    import org.junit.Test;
021    
022    /**
023     * Tests the Component section in Rice.
024     *
025     * @author Kuali Rice Team (rice.collab@kuali.org)
026     */
027    public class CollectionTotallingSmokeTest extends SmokeTestBase {
028    
029        /**
030         * "/kr-krad/uicomponents?viewId=UifCompView&methodToCall=start&readOnlyFields=field91";
031         */
032        public static final String BOOKMARK_URL = "/kr-krad/uicomponents?viewId=Demo-CollectionTotaling&methodToCall=start";
033    
034        @Override
035        protected String getBookmarkUrl() {
036            return BOOKMARK_URL;
037        }
038    
039        protected void navigate() throws InterruptedException {
040            waitAndClickKRAD();
041            waitAndClickByXpath(KUALI_COLLECTION_TOTALLING_XPATH);
042            switchToWindow(KUALI_COLLECTION_TOTALLING_WINDOW_XPATH);               
043        }
044    
045        //Code for KRAD Test Package.
046        protected void testCollectionTotalling() throws Exception {
047            //Scenario Asserts Changes in Total at client side
048            waitForElementPresent("div#Demo-CollectionTotaling-Section1 div[role='grid'] div[data-label='Total']");
049            SeleneseTestBase.assertEquals("Total: 419", getText(
050                    "div#Demo-CollectionTotaling-Section1 div[role='grid'] div[data-label='Total']"));
051            clearText("div#Demo-CollectionTotaling-Section1 > div[role='grid'] > table > tbody div[data-parent=Demo-CollectionTotaling-Section1]  input[name='list1[0].field1']");
052            waitAndType("div#Demo-CollectionTotaling-Section1 > div[role='grid'] > table > tbody div[data-parent=Demo-CollectionTotaling-Section1]  input[name='list1[0].field1']","10");
053            waitAndClick("div#Demo-CollectionTotaling-Section1 div[role='grid'] div[data-label='Total']");
054            Thread.sleep(5000);
055            SeleneseTestBase.assertEquals("Total: 424", getText(
056                    "div#Demo-CollectionTotaling-Section1 div[role='grid'] div[data-label='Total']"));
057    
058            //Scenario Asserts Changes in Total at client side on keyUp
059            SeleneseTestBase.assertEquals("Total: 419", getText(
060                    "div#Demo-CollectionTotaling-Section2 div[role='grid'] div[data-label='Total']"));
061            clearText("div#Demo-CollectionTotaling-Section2 > div[role='grid'] > table > tbody div[data-parent=Demo-CollectionTotaling-Section2] input[name='list1[0].field1']");
062            waitAndType("div#Demo-CollectionTotaling-Section2 > div[role='grid'] > table > tbody div[data-parent=Demo-CollectionTotaling-Section2] input[name='list1[0].field1']","9");
063            waitAndClick("div#Demo-CollectionTotaling-Section2 div[role='grid'] div[data-label='Total']");
064            Thread.sleep(5000);
065            SeleneseTestBase.assertEquals("Total: 423", getText(
066                    "div#Demo-CollectionTotaling-Section2 div[role='grid'] div[data-label='Total']"));
067    
068            //Asserts absence of Total in 2nd column at the footer for Demonstrating totaling on only some columns
069            SeleneseTestBase.assertEquals("", getTextByXpath("//div[3]/div[3]/table/tfoot/tr/th[2]"));
070    
071            //Asserts Presence of Total in 2nd column at the footer for Demonstrating totaling on only some columns
072            SeleneseTestBase.assertEquals("Total: 369", getTextByXpath(
073                    "//div[3]/div[3]/table/tfoot/tr/th[3]/div/fieldset/div/div[2]/div[2]"));
074    
075            //Asserts Presence of Total in left most column only being one with no totaling itself
076            SeleneseTestBase.assertEquals("Total:", getTextByXpath("//*[@id='u100213_span']"));
077            SeleneseTestBase.assertEquals("419", getTextByXpath(
078                    "//div[4]/div[3]/table/tfoot/tr/th[2]/div/fieldset/div/div[2]/div[2]"));
079    
080            //Asserts changes in value in Total and Decimal for Demonstrating multiple types of calculations for a single column (also setting average to 3 decimal places to demonstrate passing data to calculation function)
081            SeleneseTestBase.assertEquals("Total: 382", getTextByXpath("//div[2]/div/fieldset/div/div[2]/div[2]"));
082            clearText("div#Demo-CollectionTotaling-Section6 > div[role='grid'] > table > tbody div[data-parent=Demo-CollectionTotaling-Section6] input[name='list1[0].field4']");
083            waitAndType("div#Demo-CollectionTotaling-Section6 > div[role='grid'] > table > tbody div[data-parent=Demo-CollectionTotaling-Section6] input[name='list1[0].field4']","11");
084            waitAndClick("div#Demo-CollectionTotaling-Section2 div[role='grid'] div[data-label='Total']");
085            Thread.sleep(5000);
086            SeleneseTestBase.assertEquals("Total: 385", getTextByXpath("//div[2]/div/fieldset/div/div[2]/div[2]"));
087    
088            // Assert changes in Decimal..
089            clearText("div#Demo-CollectionTotaling-Section6 > div[role='grid'] > table > tbody div[data-parent=Demo-CollectionTotaling-Section6] input[name='list1[0].field4']");
090            waitAndType("div#Demo-CollectionTotaling-Section6 > div[role='grid'] > table > tbody div[data-parent=Demo-CollectionTotaling-Section6] input[name='list1[0].field4']","15.25");
091            waitAndClick("div#Demo-CollectionTotaling-Section2 div[role='grid'] div[data-label='Total']");
092            Thread.sleep(5000);
093            SeleneseTestBase.assertEquals("Page Average: 11.917", getTextByXpath("//div[2]/fieldset/div/div[2]/div"));
094        }
095    
096        @Test
097        public void testCollectionTotallingBookmark() throws Exception {
098            testCollectionTotalling();
099            passed();
100        }
101    
102        @Test
103        public void testCollectionTotallingNav() throws Exception {
104            testCollectionTotalling();
105            passed();
106        }
107    }