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 org.kuali.rice.testtools.common.JiraAwareFailable;
019 import org.kuali.rice.testtools.selenium.WebDriverLegacyITBase;
020 import org.openqa.selenium.By;
021 import org.openqa.selenium.WebElement;
022
023 import java.util.List;
024
025 /**
026 * Tests the Component section in Rice.
027 *
028 * @author Kuali Rice Team (rice.collab@kuali.org)
029 */
030 public abstract class ConfigurationTestViewAftBase extends WebDriverLegacyITBase {
031
032 /**
033 * "/kr-krad/configuration-test-view-uif-controller?viewId=ConfigurationTestView&methodToCall=start";
034 */
035 public static final String BOOKMARK_URL = "/kr-krad/configuration-test-view-uif-controller?viewId=ConfigurationTestView&methodToCall=start";
036
037 /** bean id prefix in used in view */
038 private String idPrefix = "ConfigurationTestView-ProgressiveRender-";
039
040 /** bean id suffix for add line controls */
041 String addLineIdSuffix = "InputField_add_control";
042
043
044 @Override
045 protected String getBookmarkUrl() {
046 return BOOKMARK_URL;
047 }
048
049 protected void navigation() throws InterruptedException {
050 waitAndClickKRAD();
051 waitAndClickByXpath("(//a[text()='Configuration Test View'])");
052 switchToWindow(CONFIGURATION_VIEW_WINDOW_TITLE);
053 waitForTitleToEqualKualiPortalIndex();
054 }
055
056 protected void testConfigurationTestViewNav(JiraAwareFailable failable) throws Exception {
057 navigation();
058 testConfigurationTestView(idPrefix);
059 testAddLineWithSpecificTime(idPrefix, addLineIdSuffix);
060 testAddLineWithAllDay(idPrefix, addLineIdSuffix);
061 testAddLineAllDay(idPrefix, addLineIdSuffix);
062 passed();
063 }
064
065 protected void testConfigurationTestViewBookmark(JiraAwareFailable failable) throws Exception {
066 testConfigurationTestView(idPrefix);
067 testAddLineWithSpecificTime(idPrefix, addLineIdSuffix);
068 testAddLineWithAllDay(idPrefix, addLineIdSuffix);
069 testAddLineAllDay(idPrefix, addLineIdSuffix);
070 passed();
071 }
072
073 protected void testAddLineWithSpecificTime(String idPrefix, String addLineIdSuffix) throws Exception {
074 waitForElementPresentByXpath("//label[@id='" + idPrefix + "TextInputField_label']");
075 confirmAddLineControlsPresent(idPrefix, addLineIdSuffix);
076 String startTimeId = "//*[@id='" + idPrefix + "StartTime" + addLineIdSuffix + "']";
077 String inputTime = "7:06";
078 waitAndTypeByXpath(startTimeId, inputTime);
079 String amPmSelectLocator = "//*[@id='" + idPrefix + "StartTimeAmPm" + addLineIdSuffix + "']";
080 selectByXpath(amPmSelectLocator, "PM");
081 assertEquals("PM", waitAndGetAttributeByXpath(amPmSelectLocator, "value"));
082 Thread.sleep(5000); //allow for ajax refresh
083 waitAndClickButtonByText("add");
084 Thread.sleep(5000); //allow for line to be added
085
086 //confirm that line has been added
087 assertTrue("line (//input[@value='7:06'])is not present", isElementPresentByXpath("//input[@value='7:06']"));
088 }
089
090 protected void testAddLineWithAllDay(String idPrefix, String addLineIdSuffix) throws Exception {
091 waitForElementPresentByXpath("//label[@id='" + idPrefix + "TextInputField_label']");
092 confirmAddLineControlsPresent(idPrefix, addLineIdSuffix);
093 String startTimeId = "//*[@id='" + idPrefix + "StartTime" + addLineIdSuffix + "']";
094 String inputTime = "5:20";
095 waitAndTypeByXpath(startTimeId, inputTime);
096 String allDayId = "//*[@id='" + idPrefix + "AllDay" + addLineIdSuffix + "']";
097 waitAndClickByXpath(allDayId);
098 checkForIncidentReport();
099 Thread.sleep(5000); //allow for ajax refresh
100 waitAndClickButtonByText("add");
101 Thread.sleep(5000); //allow for line to be added
102
103 //confirm that line has been added
104 assertTrue("line (//input[@checked='checked'])is not present", isElementPresentByXpath("//input[@checked='checked']"));
105 }
106
107 protected void testAddLineAllDay(String idPrefix, String addLineIdSuffix) throws Exception {
108 waitForElementPresentByXpath("//label[@id='" + idPrefix + "TextInputField_label']");
109 confirmAddLineControlsPresent(idPrefix, addLineIdSuffix);
110 String allDayId = "//*[@id='" + idPrefix + "AllDay" + addLineIdSuffix + "']";
111 waitAndClickByXpath(allDayId);
112 checkForIncidentReport();
113 Thread.sleep(5000); //allow for ajax refresh
114 waitAndClickButtonByText("add");
115 Thread.sleep(5000); //allow for line to be added
116
117 //confirm that another line has been added (by checking the number of delete buttons)
118 WebElement table = findElement(By.id("ConfigurationTestView-ProgressiveRender-TimeInfoSection_disclosureContent"));
119 List<WebElement> columns = findElements(By.xpath("//button[contains(text(), 'delete')]"), table);
120 assertEquals("line was not added", 3, columns.size());
121
122 }
123
124 /**
125 * verify that add line controls are present
126 */
127 protected void confirmAddLineControlsPresent(String idPrefix, String addLineIdSuffix) {
128 String[] addLineIds = {"StartTime", "StartTimeAmPm", "AllDay"};
129
130 for (String id : addLineIds) {
131 String tagId = "//*[@id='" + idPrefix + id + addLineIdSuffix + "']";
132 assertTrue("Did not find id " + tagId, isElementPresentByXpath(tagId));
133 }
134 }
135
136 }