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