001    /**
002     * Copyright 2005-2014 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.sampleu.krad.configview;
017    
018    import org.kuali.rice.testtools.common.JiraAwareFailable;
019    import org.kuali.rice.testtools.selenium.WebDriverLegacyITBase;
020    
021    /**
022     * @author Kuali Rice Team (rice.collab@kuali.org)
023     */
024    public abstract class HelpAftBase extends WebDriverLegacyITBase {
025    
026        /**
027         * /kr-krad/configuration-test-view-uif-controller?viewId=ConfigurationTestView&methodToCall=start&pageId=ConfigurationTestView-Help-Page
028         */
029        public static final String BOOKMARK_URL = "/kr-krad/configuration-test-view-uif-controller?viewId=ConfigurationTestView&methodToCall=start&pageId=ConfigurationTestView-Help-Page";
030       
031        @Override
032        protected String getBookmarkUrl() {
033            return BOOKMARK_URL;
034        }
035    
036        protected void navigation() throws Exception {
037            waitAndClickKRAD();
038            waitAndClickByXpath(CONFIGURATION_VIEW_XPATH);
039            switchToWindow(CONFIGURATION_VIEW_WINDOW_TITLE);
040            waitAndClickByLinkText("Help");
041            Thread.sleep(5000);
042        }
043    
044        protected void testHelpNav(JiraAwareFailable failable) throws Exception {
045            navigation();
046            testViewHelp();
047            testPageHelp();
048            testTooltipHelp();
049            testDisplayOnlyTooltipHelp();
050            testMissingTooltipHelp();
051            passed();
052        }
053    
054        protected void testHelpBookmark(JiraAwareFailable failable) throws Exception {
055            testViewHelp();
056            testPageHelp();
057            testTooltipHelp();
058            testDisplayOnlyTooltipHelp();
059            testMissingTooltipHelp();
060            passed();
061        }
062    
063    
064        /**
065         * Test the tooltip and external help on the page
066         */
067        protected void testPageHelp() throws Exception {
068            // test tooltip help
069            fireMouseOverEventByXpath("//a/span[@class='uif-headerText-span']");
070            waitForTextPresent("Sample text for section help - tooltip help");
071    
072            // test external help
073            waitAndClickByXpath("//input[@alt='Help for Configuration Test View']");
074            Thread.sleep(5000);
075            switchToWindow("Kuali Foundation");
076            Thread.sleep(5000);
077            switchToWindow(CONFIGURATION_VIEW_WINDOW_TITLE);
078        }
079    
080        /**
081         * Test the tooltip help on the section and fields
082         */
083        protected void testTooltipHelp() throws Exception {
084            // verify that no tooltips are displayed initially
085            if (isElementPresentByXpath("//td[contains(text(),'Sample text for section help - tooltip help')]")) {
086                assertFalse(isVisibleByXpath("//td[contains(text(),'Sample text for section help - tooltip help')]"));
087            }
088    
089            if (isElementPresentByXpath("//td[contains(text(),'Sample text for field help - label left')]")) {
090                assertFalse(isVisibleByXpath("//td[contains(text(),'Sample text for field help - label left')]"));
091            }
092    
093            if (isElementPresentByXpath("//td[contains(text(),'Sample text for field help - label right')]")) {
094                assertFalse(isVisibleByXpath("//td[contains(text(),'Sample text for field help - label right')]"));
095            }
096    
097            if (isElementPresentByXpath("//td[contains(text(),'Sample text for field help - label top')]")) {
098                assertFalse(isVisibleByXpath("//td[contains(text(),'Sample text for field help - label top')]"));
099            }
100    
101            if (isElementPresentByXpath("//td[contains(text(),'Sample text for standalone help widget tooltip which will never be rendered')]")) {
102                assertFalse(isVisibleByXpath("//td[contains(text(),'Sample text for standalone help widget tooltip which will never be rendered')]"));
103            }
104    
105            if (isElementPresentByXpath("//td[contains(text(),'Sample text for field help - there is also a tooltip on the label but it is overridden by the help tooltip')]")) {
106                assertFalse(isVisibleByXpath("//td[contains(text(),'Sample text for field help - there is also a tooltip on the label but it is overridden by the help tooltip')]"));
107            }
108    
109            if (isElementPresentByXpath("//td[contains(text(),'Sample text for label tooltip - this will not be rendered as it is overridden by the help tooltip')]")) {
110                assertFalse(isVisibleByXpath("//td[contains(text(),'Sample text for label tooltip - this will not be rendered as it is overridden by the help tooltip')]"));
111            }
112    
113            if (isElementPresentByXpath("//td[contains(text(),'Sample text for field help - there is also an on-focus tooltip')]")) {
114                assertFalse(isVisibleByXpath("//td[contains(text(),'Sample text for field help - there is also an on-focus tooltip')]"));
115            }
116    
117            if (isElementPresentByXpath("//td[contains(text(),'Sample text for on-focus event tooltip')]")) {
118                assertFalse(isVisibleByXpath("//td[contains(text(),'Sample text for on-focus event tooltip')]"));
119            }
120    
121            if (isElementPresentByXpath("//td[contains(text(),'Sample text for check box help')]")) {
122                assertFalse(isVisibleByXpath("//td[contains(text(),'Sample text for check box help')]"));
123            }
124    
125            // test tooltip help of section header
126            fireMouseOverEventByXpath("//section[@id='ConfigurationTestView-Help-Section1']/header/h3[@class='uif-headerText']");
127            Thread.sleep(500);
128            assertTrue(isVisibleByXpath("//td[contains(text(),'Sample text for section help - tooltip help')]"));
129    
130            // verify that no external help exist
131            assertFalse(isElementPresent("#ConfigurationTestView-Help-Section1 input.uif-helpImage"));
132    
133            // test tooltip help of field with label to the left
134            fireMouseOverEventByXpath("//label[@id='field-label-left_label']");
135            Thread.sleep(3000);
136            assertTrue(isVisibleByXpath("//td[contains(text(),'Sample text for field help - label left')]"));
137    
138            // test tooltip help of field with label to the right
139            fireMouseOverEventByXpath("//label[@id='field-label-right_label']");
140            Thread.sleep(3000);
141            assertTrue(isVisibleByXpath("//td[contains(text(),'Sample text for field help - label right')]"));
142    
143            // test tooltip help of field with label to the top
144            fireMouseOverEventByXpath("//label[@id='field-label-top_label']");
145            Thread.sleep(3000);
146            assertTrue(isVisibleByXpath("//td[contains(text(),'Sample text for field help - label top')]"));
147    
148            // verify that standalone help with tooltip is not rendered
149            assertFalse(isElementPresentByXpath("//*[@id='standalone-help-not-rendered']"));
150    
151            // test tooltip help when it overrides a tooltip
152            fireMouseOverEventByXpath("//label[@id='override-tooltip_label']");
153            Thread.sleep(3000);
154            assertTrue(isVisibleByXpath("//td[contains(text(),'Sample text for field help - there is also a tooltip on the label but it is overridden by the help tooltip')]"));
155            if (isElementPresentByXpath("//td[contains(text(),'Sample text for label tooltip - this will not be rendered as it is overridden by the help tooltip')]")) {
156                assertFalse(isVisibleByXpath("//td[contains(text(),'Sample text for label tooltip - this will not be rendered as it is overridden by the help tooltip')]"));
157            }
158    
159            // test tooltip help in conjunction with a focus event tooltip
160            fireMouseOverEventByXpath("//input[@id='on-focus-tooltip_control']");
161            assertTrue(isVisibleByXpath("//td[contains(text(),'Sample text for on-focus event tooltip')]"));
162            fireMouseOverEventByXpath("//label[@id='on-focus-tooltip_label']");
163            assertTrue(isVisibleByXpath("//td[contains(text(),'Sample text for field help - there is also an on-focus tooltip')]"));
164    
165            // test tooltip help against a check box - help contains html
166            fireMouseOverEventByXpath("//label[@id='checkbox_label']");
167            assertTrue(isVisibleByXpath("//td[contains(text(),'Sample text for check box help')]"));
168        }
169    
170        /**
171         * Test the tooltip help on the sub-section and fields that are display only
172         */
173        protected void testDisplayOnlyTooltipHelp() throws Exception {
174    
175            // test tooltip help of sub-section header
176            fireMouseOverEventByXpath("//section[@data-parent='ConfigurationTestView-Help-Section1']/header/h4");
177            waitForElementPresentByXpath("//td[contains(text(),'Sample text for sub-section help')]");
178    
179            // test tooltip help of display only data field
180            fireMouseOverEventByXpath("//label[@for='display-field_control']");
181            waitForElementPresentByXpath("//td[contains(text(),'Sample text for read only field help')]");
182        }
183    
184        /**
185         * Test the tooltip help on the section and fields with no content
186         */
187        protected void testMissingTooltipHelp() throws Exception {
188    
189            // test tooltip help of section header
190            fireMouseOverEventByXpath("//section[@id='ConfigurationTestView-Help-Section2']/div");
191            assertFalse(isElementPresentByXpath("//div[@class='jquerybubblepopup jquerybubblepopup-black' and @style='opacity: 0; top: 627px; left: 2px; position: absolute; display: block;']"));
192    
193            // test tooltip help of field
194            fireMouseOverEventByXpath("//label[@id='missing-tooltip-help_label']");
195            assertFalse(isElementPresentByXpath("//div[@class='jquerybubblepopup jquerybubblepopup-black' and @style='opacity: 0; top: 627px; left: 2px; position: absolute; display: block;']"));
196        }
197    
198        /**
199         * Test the tooltip and external help on the view
200         */
201        protected void testViewHelp() throws Exception {
202            // test tooltip help
203            fireEvent("field102", "blur");
204            fireMouseOverEventByXpath("//label[@id='field-label-left_label']");
205            waitForTextPresent("Sample text for field help - label left");
206    
207            // test external help
208            waitAndClickByXpath("//input[@alt='Help for Configuration Test View']");
209            Thread.sleep(5000);
210            switchToWindow("Kuali Foundation");
211            Thread.sleep(5000);
212            switchToWindow(CONFIGURATION_VIEW_WINDOW_TITLE);
213        }
214    }