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 */
016package edu.samplu.travel.krad.test;
017
018import com.thoughtworks.selenium.SeleneseTestBase;
019import edu.samplu.common.SmokeTestBase;
020import org.junit.Test;
021
022/**
023 * Tests the Component section in Rice.
024 *
025 * @author Kuali Rice Team (rice.collab@kuali.org)
026 */
027public 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}