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.krad.configview;
018
019 import edu.samplu.common.WebDriverITBase;
020 import org.junit.Test;
021 import org.openqa.selenium.By;
022 import org.openqa.selenium.interactions.Actions;
023
024 import static org.junit.Assert.assertEquals;
025 import static org.junit.Assert.assertFalse;
026 import static org.junit.Assert.assertTrue;
027
028 /**
029 * Test the help widget
030 *
031 * @author Kuali Rice Team (rice.collab@kuali.org)
032 */
033 public class HelpIT2 extends WebDriverITBase {
034
035 /**
036 * URL for the Configuration Test View - Help
037 *
038 * <p>
039 * Due to a WebDriver bug (feature?) the tooltips can not be tested with WebDriver. {@link HelpIT} is being used
040 * to test help tooltips.
041 * </p>
042 *
043 * @see edu.samplu.common.WebDriverITBase#getTestUrl()
044 */
045 @Override
046 public String getTestUrl() {
047 return "/kr-krad/configuration-test-view-uif-controller?viewId=ConfigurationTestView-Help&methodToCall=start";
048 }
049
050 /**
051 * Test the tooltip and external help on the view
052 */
053 @Test
054 public void testViewHelp() throws Exception {
055 // test tooltip help
056 if (isElementPresentQuick(By.cssSelector("td.jquerybubblepopup-innerHtml"))) {
057 assertFalse(driver.findElement(By.cssSelector("td.jquerybubblepopup-innerHtml")).isDisplayed());
058 }
059 Actions action = new Actions(driver);
060 action.moveToElement(driver.findElement(By.cssSelector("h1 .uif-headerText-span"))).perform();
061 assertEquals(driver.findElement(By.cssSelector("td.jquerybubblepopup-innerHtml")).getText(), "Sample text for view help");
062 assertTrue(driver.findElement(By.cssSelector("td.jquerybubblepopup-innerHtml")).isDisplayed());
063 action.moveToElement(driver.findElement(By.id("mouse-out"))).perform();
064 // TODO: moveToElement does not remove mouse focus on previous element. (WebDriver bug?) Therefore we
065 // can not check for the proper behavior of the mouse out events.
066 // Also since multiple tooltips would be displayed we can not test multiple tooltips in one test. Thus
067 // Tooltips are being tested in the Selenium RC test HelpIT.java
068 // This code has been left in place to show a sample of how tooltip help testing would be performed, in
069 // the hopes that eventually all the testing can be converted to WebDriver.
070 // if (isElementPresentQuick(By.cssSelector("td.jquerybubblepopup-innerHtml"))) {
071 // assertFalse(driver.findElement(By.cssSelector("td.jquerybubblepopup-innerHtml")).isDisplayed());
072 // }
073
074 // test external help
075 assertPopUpWindowUrl(By.cssSelector("input[title=\"Help for Configuration Test View - Help\"]"), "HelpWindow", "http://www.kuali.org/?view");
076 }
077
078 /**
079 * Test the external help on the section and fields
080 */
081 @Test
082 public void testExternalHelp() throws Exception {
083 // test external help of section
084 assertPopUpWindowUrl(By.cssSelector("input[title=\"Help for External Help\"]"), "HelpWindow", "http://www.kuali.org/?section");
085
086 // test external help of field with label left
087 assertPopUpWindowUrl(By.cssSelector("#field-label-left-external-help .uif-helpImage"), "HelpWindow",
088 "http://www.kuali.org/?label_left");
089
090 // test external help of field with label right
091 assertPopUpWindowUrl(By.cssSelector("#field-label-right-external-help .uif-helpImage"), "HelpWindow",
092 "http://www.kuali.org/?label_right");
093
094 // test external help of field with label top and help URL from system parameters
095 assertPopUpWindowUrl(By.cssSelector("#field-label-top-external-help .uif-helpImage"), "HelpWindow",
096 "http://www.kuali.org/?system_parm");
097
098 // test external help of standalone help widget
099 assertPopUpWindowUrl(By.id("standalone-external-help"), "HelpWindow", "http://www.kuali.org/?widget_only");
100 }
101
102 /**
103 * Test the external help on the sub-section and display only fields
104 */
105 @Test
106 public void testDisplayOnlyExternalHelp() throws Exception {
107 // test external help of sub-section
108 assertPopUpWindowUrl(By.cssSelector("input[title=\"Help for Display only fields\"]"), "HelpWindow", "http://www.kuali.org/?sub_section");
109
110 // test external help of display only data field
111 assertPopUpWindowUrl(By.cssSelector("#display-field-external-help .uif-helpImage"), "HelpWindow",
112 "http://www.kuali.org/?display_field");
113 }
114
115 /**
116 * Test the external help on the section and fields with missing help URL
117 */
118 @Test
119 public void testMissingExternalHelp() throws Exception {
120 // test external help of section is not rendered
121 isElementPresent(By.cssSelector("input[title=\"Help for Missing External Help\"]"));
122
123 // test external help of field with blank externalHelpURL is not rendered
124 isElementPresentQuick(By.cssSelector("#external-help-externalHelpUrl-empty .uif-helpImage"));
125
126 // test external help of field with empty helpDefinition is not rendered
127 isElementPresentQuick(By.cssSelector("#external-help-helpdefinition-empty .uif-helpImage"));
128
129 // test external help of field with missing system parameter is not rendered
130 isElementPresentQuick(By.cssSelector("#external-help-system-parm-missing .uif-helpImage"));
131
132 // test external help of standalone help widget is not rendered
133 isElementPresentQuick(By.id("standalone-external-help-missing"));
134 }
135 }