001 /**
002 * Copyright 2005-2011 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.krad.configview;
017
018 import edu.samplu.common.UpgradedSeleniumITBase;
019 import org.junit.After;
020 import org.junit.Before;
021 import org.junit.Ignore;
022 import org.junit.Test;
023
024 import com.thoughtworks.selenium.DefaultSelenium;
025 import com.thoughtworks.selenium.Selenium;
026
027 import static org.junit.Assert.*;
028
029 /**
030 * Test the help widget
031 *
032 * <p>
033 * Selenium RC does not allow us to test the external help popup windows due to an error on JavaScrips window.close
034 * method when selenium is running. To test the external help we use the {@link HelpIT2} test
035 * which utilizes WebDriver. Unfortunately due to a WebDriver bug/feature we can't test the tooltip help there.
036 * </p>
037 *
038 * @author Kuali Rice Team (rice.collab@kuali.org)
039 */
040 public class HelpIT extends UpgradedSeleniumITBase {
041
042 // Delay in milliseconds used to allow the help window reload the new help page.
043 // waitForPopUp will not work since the window already exists.
044 private long HELP_WINDOW_LOAD_DELAY = 3000;
045
046 @Override
047 public String getTestUrl() {
048 return "/kr-krad/configuration-test-view-uif-controller?viewId=ConfigurationTestView-Help&methodToCall=start";
049 }
050
051 /**
052 * Test the tooltip and external help on the view
053 */
054 @Test
055 public void testViewHelp() throws Exception {
056 // test tooltip help
057 selenium.mouseOver("css=h1 .uif-headerText-span");
058 assertEquals("Sample text for view help", selenium.getText("css=td.jquerybubblepopup-innerHtml"));
059
060 // test external help
061 selenium.click("css=input[title=\"Help for Configuration Test View - Help\"]");
062 selenium.waitForPopUp("HelpWindow", "30000");
063 selenium.selectPopUp("HelpWindow");
064 assertEquals("http://www.kuali.org/?view", selenium.getLocation());
065 selenium.deselectPopUp();
066 }
067
068 /**
069 * Test the tooltip and external help on the page
070 */
071 @Test
072 public void testPageHelp() throws Exception {
073 // test tooltip help
074 selenium.mouseOver("css=h2 .uif-headerText-span");
075 assertEquals("Sample text for page help", selenium.getText("css=td.jquerybubblepopup-innerHtml"));
076
077 // test external help
078 selenium.click("css=input[title=\"Help for Help Page\"]");
079 selenium.waitForPopUp("HelpWindow", "30000");
080 selenium.selectPopUp("HelpWindow");
081 assertEquals("http://www.kuali.org/?page", selenium.getLocation());
082 selenium.deselectPopUp();
083 }
084
085 /**
086 * Test the tooltip help on the section and fields
087 */
088 @Test
089 public void testTooltipHelp() throws Exception {
090 // verify that no tooltips are displayed initially
091 if (selenium.isElementPresent("css=td:contains(\"Sample text for section help - tooltip help\")")) {
092 assertFalse(selenium.isVisible("css=td:contains(\"Sample text for section help - tooltip help\")"));
093 }
094 if (selenium.isElementPresent("css=td:contains(\"Sample text for field help - label left\")")) {
095 assertFalse(selenium.isVisible("css=td:contains(\"Sample text for field help - label left\")"));
096 }
097 if (selenium.isElementPresent("css=td:contains(\"Sample text for field help - label right\")")) {
098 assertFalse(selenium.isVisible("css=td:contains(\"Sample text for field help - label right\")"));
099 }
100 if (selenium.isElementPresent("css=td:contains(\"Sample text for field help - label top\")")) {
101 assertFalse(selenium.isVisible("css=td:contains(\"Sample text for field help - label top\")"));
102 }
103 if (selenium.isElementPresent("css=td:contains(\"Sample text for standalone help widget tooltip which will never be rendered\")")) {
104 assertFalse(selenium.isVisible("css=td:contains(\"Sample text for standalone help widget tooltip which will never be rendered\")"));
105 }
106 if (selenium.isElementPresent("css=td:contains(\"Sample text for field help - there is also a tooltip on the label but it is overridden by the help tooltip\")")) {
107 assertFalse(selenium.isVisible("css=td:contains(\"Sample text for field help - there is also a tooltip on the label but it is overridden by the help tooltip\")"));
108 }
109 if (selenium.isElementPresent("css=td:contains(\"Sample text for label tooltip - this will not be rendered as it is overridden by the help tooltip\")")) {
110 assertFalse(selenium.isVisible("css=td:contains(\"Sample text for label tooltip - this will not be rendered as it is overridden by the help tooltip\")"));
111 }
112 if (selenium.isElementPresent("css=td:contains(\"Sample text for field help - there is also an on-focus tooltip\")")) {
113 assertFalse(selenium.isVisible("css=td:contains(\"Sample text for field help - there is also an on-focus tooltip\")"));
114 }
115 if (selenium.isElementPresent("css=td:contains(\"Sample text for on-focus event tooltip\")")) {
116 assertFalse(selenium.isVisible("css=td:contains(\"Sample text for on-focus event tooltip\")"));
117 }
118 if (selenium.isElementPresent("css=td:contains(\"Sample text for check box help\")")) {
119 assertFalse(selenium.isVisible("css=td:contains(\"Sample text for check box help\")"));
120 }
121
122 // test tooltip help of section header
123 selenium.mouseOver("css=#ConfigurationTestView-Help-Section1 h3 .uif-headerText-span");
124 assertTrue(selenium.isVisible("css=td:contains(\"Sample text for section help - tooltip help\")"));
125 selenium.mouseOut("css=#ConfigurationTestView-Help-Section1 h3 .uif-headerText-span");
126 assertFalse(selenium.isVisible("css=td:contains(\"Sample text for section help - tooltip help\")"));
127
128 // verify that no external help exist
129 assertFalse(selenium.isElementPresent("css=#ConfigurationTestView-Help-Section1 input.uif-helpImage"));
130
131 // test tooltip help of field with label to the left
132 selenium.mouseOver("id=field-label-left_label");
133 assertTrue(selenium.isVisible("css=td:contains(\"Sample text for field help - label left\")"));
134 selenium.mouseOut("id=field-label-left_label");
135 assertFalse(selenium.isVisible("css=td:contains(\"Sample text for field help - label left\")"));
136
137 // test tooltip help of field with label to the right
138 selenium.mouseOver("id=field-label-right_label");
139 assertTrue(selenium.isVisible("css=td:contains(\"Sample text for field help - label righ\")"));
140 selenium.mouseOut("id=field-label-right_label");
141 assertFalse(selenium.isVisible("css=td:contains(\"Sample text for field help - label right\")"));
142
143 // test tooltip help of field with label to the top
144 selenium.mouseOver("id=field-label-top_label");
145 assertTrue(selenium.isVisible("css=td:contains(\"Sample text for field help - label top\")"));
146 selenium.mouseOut("id=field-label-top_label");
147 assertFalse(selenium.isVisible("css=td:contains(\"Sample text for field help - label top\")"));
148
149 // verify that standalone help with tooltip is not rendered
150 assertFalse(selenium.isElementPresent("id=standalone-help-not-rendered"));
151
152 // test tooltip help when it overrides a tooltip
153 selenium.mouseOver("id=override-tooltip_label");
154 assertTrue(selenium.isVisible("css=td:contains(\"Sample text for field help - there is also a tooltip on the label but it is overridden by the help tooltip\")"));
155 if (selenium.isElementPresent("css=td:contains(\"Sample text for label tooltip - this will not be rendered as it is overridden by the help tooltip\")")) {
156 assertFalse(selenium.isVisible("css=td:contains(\"Sample text for label tooltip - this will not be rendered as it is overridden by the help tooltip\")"));
157 }
158 selenium.mouseOut("id=override-tooltip_label");
159 assertFalse(selenium.isVisible("css=td:contains(\"Sample text for field help - there is also a tooltip on the label but it is overridden by the help tooltip\")"));
160
161 // test tooltip help in conjunction with a focus event tooltip
162 selenium.mouseOver("id=on-focus-tooltip_control");
163 assertTrue(selenium.isVisible("css=td:contains(\"Sample text for on-focus event tooltip\")"));
164 selenium.mouseOver("id=on-focus-tooltip_label");
165 assertTrue(selenium.isVisible("css=td:contains(\"Sample text for field help - there is also an on-focus tooltip\")"));
166 selenium.mouseOut("id=on-focus-tooltip_control");
167 selenium.mouseOut("id=on-focus-tooltip_label");
168 assertFalse(selenium.isVisible("css=td:contains(\"Sample text for field help - there is also an on-focus tooltip\")"));
169 assertFalse(selenium.isVisible("css=td:contains(\"Sample text for on-focus event tooltip\")"));
170
171 // test tooltip help against a check box - help contains html
172 selenium.mouseOver("id=checkbox_label");
173 assertTrue(selenium.isVisible("css=td:contains(\"Sample text for check box help\")"));
174 selenium.mouseOut("id=checkbox_label");
175 assertFalse(selenium.isVisible("css=td:contains(\"Sample text for check box help\")"));
176 }
177
178 /**
179 * Test the tooltip help on the sub-section and fields that are display only
180 */
181 @Test
182 public void testDisplayOnlyTooltipHelp() throws Exception {
183 // verify that no tooltips are displayed initially
184 if (selenium.isElementPresent("css=td:contains(\"Sample text for sub-section help\")")) {
185 assertFalse(selenium.isVisible("css=td:contains(\"Sample text for sub-section help\")"));
186 }
187 if (selenium.isElementPresent("css=td:contains(\"Sample text for read only field help\")")) {
188 assertFalse(selenium.isVisible("css=td:contains(\"Sample text for read only field help\")"));
189 }
190
191 // test tooltip help of sub-section header
192 selenium.mouseOver("css=h4 .uif-headerText-span");
193 assertTrue(selenium.isVisible("css=td:contains(\"Sample text for sub-section help\")"));
194 selenium.mouseOut("css=h4 .uif-headerText-span");
195 assertFalse(selenium.isVisible("css=td:contains(\"Sample text for sub-section help\")"));
196
197 // test tooltip help of display only data field
198 selenium.mouseOver("css=#display-field label");
199 assertTrue(selenium.isVisible("css=td:contains(\"Sample text for read only field help\")"));
200 selenium.mouseOut("css=#display-field label");
201 assertFalse(selenium.isVisible("css=td:contains(\"Sample text for read only field help\")"));
202 }
203
204 /**
205 * Test the tooltip help on the section and fields with no content
206 */
207 @Test
208 public void testMissingTooltipHelp() throws Exception {
209 // verify that no tooltips are displayed initially
210 assertFalse(selenium.isElementPresent("css=.jquerybubblepopup"));
211
212 // verify that no external help exist
213 assertFalse(selenium.isElementPresent("css=#ConfigurationTestView-Help-Section2 input.uif-helpImage"));
214
215 // test tooltip help of section header
216 selenium.mouseOver("css=#ConfigurationTestView-Help-Section2 h3 .uif-headerText-span");
217 assertFalse(selenium.isElementPresent("css=.jquerybubblepopup"));
218 selenium.mouseOut("css=#ConfigurationTestView-Help-Section1 h3 .uif-headerText-span");
219 assertFalse(selenium.isElementPresent("css=.jquerybubblepopup"));
220
221 // test tooltip help of field
222 selenium.mouseOver("id=missing-tooltip-help_label");
223 assertFalse(selenium.isElementPresent("css=.jquerybubblepopup"));
224 selenium.mouseOut("id=missing-tooltip-help_label");
225 assertFalse(selenium.isElementPresent("css=.jquerybubblepopup"));
226 }
227 }