001 /*
002 * Copyright 2006-2012 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
017 package edu.samplu.travel.krad.test;
018
019 import edu.samplu.common.ITUtil;
020 import edu.samplu.common.WebDriverLegacyITBase;
021
022 import org.junit.Assert;
023 import org.junit.Test;
024
025 import static junit.framework.Assert.*;
026
027 /**
028 * test that configuration test view items work as expected
029 *
030 * @author Kuali Rice Team (rice.collab@kuali.org)
031 */
032 public class ConfigurationTestViewLegacyIT extends WebDriverLegacyITBase {
033 @Override
034 public String getTestUrl() {
035 return ITUtil.PORTAL;
036 }
037 /** bean id prefix in used in view */
038 private String idPrefix = "ConfigurationTestView-ProgressiveRender-";
039 /** bean id suffix for add line controls */
040 String addLineIdSuffix = "InputField_add_control";
041
042
043 /**
044 * test for text input field label - style setting and refreshWhenChanged for components not in collection
045 */
046 @Test
047 public void testConfigurationTestView() throws Exception {
048 openConfigurationTestView();
049
050 selectFrame("iframeportlet");
051 // testing for https://groups.google.com/a/kuali.org/group/rice.usergroup.krad/browse_thread/thread/1e501d07c1141aad#
052 String styleValue = getAttributeByXpath("//span[@id='" + idPrefix + "TextInputField_label_span']","style");
053 // log.info("styleValue is " + styleValue);
054 Assert.assertTrue(idPrefix + "textInputField label does not contain expected style", styleValue.replace(" ", "").contains(
055 "color:red"));
056
057 // get current list of options
058 String refreshTextSelectLocator = "//select[@id='" + idPrefix + "RefreshTextField_control']";
059 String[] options1 = getSelectOptionsByXpath(refreshTextSelectLocator);
060 String dropDownSelectLocator = "//select[@id='" + idPrefix + "DropDown_control']";
061 selectByXpath(dropDownSelectLocator, "Vegetables");
062 Thread.sleep(3000);
063 //get list of options after change
064 String[] options2 = getSelectOptionsByXpath(refreshTextSelectLocator);
065 //verify that the change has occurred
066 assertFalse("Field 1 selection did not change Field 2 options https://jira.kuali.org/browse/KULRICE-8163 Configuration Test View Conditional Options doesn't change Field 2 options based on Field 1 selection", options1[options1.length - 1].equalsIgnoreCase(options2[options2.length - 1]));
067 //confirm that control gets disabled
068 selectByXpath(dropDownSelectLocator, "None");
069 Thread.sleep(3000);
070 assertEquals("true", getAttributeByXpath(refreshTextSelectLocator, "disabled"));
071 passed();
072 }
073
074 /**
075 * open the configuration test view page
076 */
077 private void openConfigurationTestView() throws InterruptedException {
078 waitAndClickByLinkText("KRAD");
079 waitAndClickByLinkText("Configuration Test View");
080 waitForPageToLoad();
081 }
082
083 /**
084 * test adding a line to a collection which uses an add line that has spring expressions that are evaluated on refresh
085 * a specific time is set
086 */
087 @Test
088 public void testAddLineWithSpecificTime() throws Exception{
089 openConfigurationTestView();
090
091 selectFrame("iframeportlet");
092
093 confirmAddLineControlsPresent();
094
095 String startTimeId = "//*[@id='" +idPrefix + "StartTime" + addLineIdSuffix + "']";
096
097 String inputTime = "7:06";
098 waitAndTypeByXpath(startTimeId, inputTime);
099 String amPmSelectLocator = "//*[@id='" + idPrefix + "StartTimeAmPm" + addLineIdSuffix + "']";
100
101 selectByXpath(amPmSelectLocator, "PM");
102 assertEquals("PM", getAttributeByXpath(amPmSelectLocator, "value"));
103 Thread.sleep(5000); //allow for ajax refresh
104 waitAndClickByXpath("//button");
105 Thread.sleep(5000); //allow for line to be added
106 //confirm that line has been added
107 assertTrue("line (//input[@value='7:06'])is not present https://jira.kuali.org/browse/KULRICE-8162 Configuration Test View Time Info add line button doesn't addline", isElementPresentByXpath("//input[@value='7:06']"));
108 passed();
109 }
110
111 /**
112 * test adding a line to a collection which has the property refreshWhenChangedPropertyNames set
113 * on more than one component.
114 */
115 @Test
116 public void testAddLineWithAllDay() throws Exception {
117 openConfigurationTestView();
118
119 selectFrame("iframeportlet");
120
121 confirmAddLineControlsPresent();
122
123 String startTimeId = "//*[@id='" + idPrefix + "StartTime" + addLineIdSuffix + "']";
124
125 String inputTime = "5:20";
126 waitAndTypeByXpath(startTimeId, inputTime);
127
128 String allDaySelector = "//*[@id='" + idPrefix + "AllDay" + addLineIdSuffix + "']";
129
130 Thread.sleep(5000); //allow for ajax refresh
131 waitAndClickByXpath(allDaySelector);
132
133 Thread.sleep(5000); //allow for ajax refresh
134 waitAndClick("div#ConfigurationTestView-ProgressiveRender-TimeInfoSection button");
135 Thread.sleep(5000); //allow for line to be added
136 passed();
137 }
138
139 /**
140 * verify that add line controls are present
141 */
142 private void confirmAddLineControlsPresent() {
143 String[] addLineIds = {"StartTime", "StartTimeAmPm", "AllDay"};
144
145 for (String id: addLineIds) {
146 String tagId = "//*[@id='" + idPrefix + id + addLineIdSuffix + "']";
147 assertTrue("Did not find id " + tagId, isElementPresentByXpath(tagId));
148 }
149 }
150
151 /**
152 * test adding a line to a collection which uses an add line that has spring expressions that are evaluated on refresh
153 * a specific time is set
154 */
155 @Test
156 public void testAddLineAllDay() throws Exception{
157 openConfigurationTestView();
158
159 selectFrame("iframeportlet");
160
161 confirmAddLineControlsPresent();
162
163 //store number of rows before adding the lines
164 String cssCountRows = "div#ConfigurationTestView-ProgressiveRender-TimeInfoSection.uif-group div#ConfigurationTestView-ProgressiveRender-TimeInfoSection_disclosureContent.uif-disclosureContent table tbody tr";
165 int rowCount = (getCssCount(cssCountRows));
166
167 String allDayId = "//*[@id='" + idPrefix + "AllDay" + addLineIdSuffix + "']";
168 Thread.sleep(5000); //allow for ajax refresh
169 waitAndClickByXpath(allDayId);
170 waitAndClick("div#ConfigurationTestView-ProgressiveRender-TimeInfoSection button");
171 Thread.sleep(5000); //allow for line to be added
172
173 //confirm that line has been added (by checking for the new delete button)
174 assertEquals("line was not added", rowCount + 1, (getCssCount(cssCountRows)));
175 passed();
176 }
177 }