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.UpgradedSeleniumITBase; 021 import org.junit.Assert; 022 import org.junit.Ignore; 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 ConfigurationTestViewIT extends UpgradedSeleniumITBase { 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 @Test 043 /** 044 * test for text input field label - style setting and refreshWhenChanged for components not in collection 045 */ 046 public void testConfigurationTestView() throws Exception { 047 openConfigurationTestView(); 048 049 // testing for https://groups.google.com/a/kuali.org/group/rice.usergroup.krad/browse_thread/thread/1e501d07c1141aad# 050 String styleValue = getAttribute("//span[@id='" + idPrefix + "TextInputField_label_span']@style"); 051 // log.info("styleValue is " + styleValue); 052 Assert.assertTrue(idPrefix + "textInputField label does not contain expected style", styleValue.replace(" ", "").contains( 053 "color:red")); 054 055 // testing for refreshWhenChanged when using spel expressions 056 selectFrame("iframeportlet"); 057 // get current list of options 058 String refreshTextSelectLocator = "id=" + idPrefix + "RefreshTextField_control"; 059 String[] options1 = getSelectOptions(refreshTextSelectLocator); 060 String dropDownSelectLocator = "id=" + idPrefix + "DropDown_control"; 061 select(dropDownSelectLocator, "label=Vegetables"); 062 waitAndClick("//option[@value='Vegetables']"); 063 Thread.sleep(3000); 064 //get list of options after change 065 String[] options2 = getSelectOptions(refreshTextSelectLocator); 066 //verify that the change has occurred 067 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])); 068 //confirm that control gets disabled 069 select(dropDownSelectLocator, "label=None"); 070 Thread.sleep(3000); 071 assertEquals("true", getAttribute(refreshTextSelectLocator+ "@disabled")); 072 073 } 074 075 /** 076 * open the configuration test view page 077 */ 078 private void openConfigurationTestView() throws InterruptedException { 079 waitAndClick("link=KRAD"); 080 waitAndClick("link=Configuration Test View"); 081 waitForPageToLoad(); 082 } 083 084 /** 085 * test adding a line to a collection which uses an add line that has spring expressions that are evaluated on refresh 086 * a specific time is set 087 */ 088 @Test 089 public void testAddLineWithSpecificTime() throws Exception{ 090 openConfigurationTestView(); 091 confirmAddLineControlsPresent(); 092 093 String startTimeId = "id=" +idPrefix + "StartTime" + addLineIdSuffix; 094 selectFrame("iframeportlet"); 095 focus(startTimeId); 096 String inputTime = "7:06"; 097 waitAndType(startTimeId, inputTime); 098 String amPmSelectLocator = "id=" + idPrefix + "StartTimeAmPm" + addLineIdSuffix; 099 // waitAndClick(amPmSelectLocator); 100 select(amPmSelectLocator, "label=PM"); 101 assertEquals("PM", getSelectedLabel(amPmSelectLocator)); 102 Thread.sleep(5000); //allow for ajax refresh 103 waitAndClick("//button"); 104 Thread.sleep(5000); //allow for line to be added 105 //confirm that line has been added 106 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", isElementPresent("//input[@value='7:06']")); 107 108 } 109 110 /** 111 * test adding a line to a collection which has the property refreshWhenChangedPropertyNames 112 * set on more than one component. 113 */ 114 @Test 115 public void testAddLineWithAllDay() throws Exception{ 116 openConfigurationTestView(); 117 confirmAddLineControlsPresent(); 118 119 String startTimeId = "id=" +idPrefix + "StartTime" + addLineIdSuffix; 120 selectFrame("iframeportlet"); 121 focus(startTimeId); 122 String inputTime = "5:20"; 123 waitAndType(startTimeId, inputTime); 124 125 String allDaySelector = "id=" + idPrefix + "AllDay" + addLineIdSuffix; 126 focus(allDaySelector); 127 Thread.sleep(5000); //allow for ajax refresh 128 waitAndClick(allDaySelector); 129 130 //Since All Day checkbox is selected, asserting PM with default AM would fails the test. Commenting out. 131 //Or Else put the commented piece of code before selecting the checkbox. 132 /* 133 String amPmSelectLocator = "id=" + idPrefix + "StartTimeAmPm" + addLineIdSuffix; 134 waitAndClick(amPmSelectLocator); 135 select(amPmSelectLocator, "label=PM"); 136 assertEquals("PM", selenium.getSelectedLabel(amPmSelectLocator)); 137 */ 138 139 Thread.sleep(5000); //allow for ajax refresh 140 waitAndClick("css=div#ConfigurationTestView-ProgressiveRender-TimeInfoSection button"); 141 Thread.sleep(5000); //allow for line to be added 142 143 //Since All Day checkbox is selected, asserting Start time's presence would fails the test. Commenting out. 144 //assertTrue("line is not present", isElementPresent("//input[@value='5:20']")); 145 } 146 147 /** 148 * verify that add line controls are present 149 */ 150 private void confirmAddLineControlsPresent() { 151 String[] addLineIds = {"StartTime", "StartTimeAmPm", "AllDay"}; 152 153 for (String id: addLineIds) { 154 String tagId = "id=" + idPrefix + id + addLineIdSuffix; 155 assertTrue("Did not find id " + tagId, isElementPresent(tagId)); 156 } 157 } 158 159 /** 160 * test adding a line to a collection which uses an add line that has spring expressions that are evaluated on refresh 161 * a specific time is set 162 */ 163 @Test 164 @Ignore("count rows through CSS or XPATH fails") 165 public void testAddLineAllDay() throws Exception{ 166 openConfigurationTestView(); 167 confirmAddLineControlsPresent(); 168 169 //store number of rows before adding the lines 170 String cssCountRows = "div#ConfigurationTestView-ProgressiveRender-TimeInfoSection.uif-group div#ConfigurationTestView-ProgressiveRender-TimeInfoSection_disclosureContent.uif-disclosureContent table tbody tr"; 171 int rowCount = (getCssCount(cssCountRows)).intValue(); 172 173 String allDayId = "id=" + idPrefix + "AllDay" + addLineIdSuffix; 174 focus(allDayId); 175 Thread.sleep(5000); //allow for ajax refresh 176 waitAndClick(allDayId); 177 waitAndClick("css=div#ConfigurationTestView-ProgressiveRender-TimeInfoSection button"); 178 Thread.sleep(5000); //allow for line to be added 179 180 //confirm that line has been added (by checking for the new delete button) 181 assertEquals("line was not added", rowCount + 1, (getCssCount(cssCountRows)).intValue()); 182 } 183 }