View Javadoc
1   /**
2    * Copyright 2005-2014 The Kuali Foundation
3    *
4    * Licensed under the Educational Community License, Version 2.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    *
8    * http://www.opensource.org/licenses/ecl2.php
9    *
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   * See the License for the specific language governing permissions and
14   * limitations under the License.
15   */
16  package edu.sampleu.krad.configview;
17  
18  import org.kuali.rice.testtools.common.JiraAwareFailable;
19  import org.kuali.rice.testtools.selenium.WebDriverLegacyITBase;
20  
21  /**
22   * @author Kuali Rice Team (rice.collab@kuali.org)
23   */
24  public abstract class HelpAftBase extends WebDriverLegacyITBase {
25  
26      /**
27       * /kr-krad/configuration-test-view-uif-controller?viewId=ConfigurationTestView&methodToCall=start&pageId=ConfigurationTestView-Help-Page
28       */
29      public static final String BOOKMARK_URL = "/kr-krad/configuration-test-view-uif-controller?viewId=ConfigurationTestView&methodToCall=start&pageId=ConfigurationTestView-Help-Page";
30      public static final String HELP_FOR_CONFIGURATION_TEST_VIEW_XPATH =
31              "//a[@title='Help for Configuration Test View']";
32  
33      @Override
34      protected String getBookmarkUrl() {
35          return BOOKMARK_URL;
36      }
37  
38      protected void navigation() throws Exception {
39          waitAndClickKRAD();
40          waitAndClickByXpath(CONFIGURATION_VIEW_XPATH);
41          switchToWindow(CONFIGURATION_VIEW_WINDOW_TITLE);
42          waitAndClickByLinkText("Help");
43          Thread.sleep(5000);
44      }
45  
46      protected void testHelpNav(JiraAwareFailable failable) throws Exception {
47          navigation();
48          testViewHelp();
49          testPageHelp();
50          testTooltipHelp();
51          testDisplayOnlyTooltipHelp();
52          testMissingTooltipHelp();
53          passed();
54      }
55  
56      protected void testHelpBookmark(JiraAwareFailable failable) throws Exception {
57          testViewHelp();
58          testPageHelp();
59          testTooltipHelp();
60          testDisplayOnlyTooltipHelp();
61          testMissingTooltipHelp();
62          passed();
63      }
64  
65  
66      /**
67       * Test the tooltip and external help on the page
68       */
69      protected void testPageHelp() throws Exception {
70          // test tooltip help
71          fireMouseOverEventByXpath("//a/span[@class='uif-headerText-span']");
72          waitForTextPresent("Sample text for section help - tooltip help");
73  
74          // test external help
75          waitAndClickByXpath(HELP_FOR_CONFIGURATION_TEST_VIEW_XPATH);
76          Thread.sleep(5000);
77          switchToWindow("Kuali Foundation");
78          Thread.sleep(5000);
79          switchToWindow(CONFIGURATION_VIEW_WINDOW_TITLE);
80      }
81  
82      /**
83       * Test the tooltip help on the section and fields
84       */
85      protected void testTooltipHelp() throws Exception {
86          // verify that no tooltips are displayed initially
87          if (isElementPresentByXpath("//td[contains(text(),'Sample text for section help - tooltip help')]")) {
88              assertFalse(isVisibleByXpath("//td[contains(text(),'Sample text for section help - tooltip help')]"));
89          }
90  
91          if (isElementPresentByXpath("//td[contains(text(),'Sample text for field help - label left')]")) {
92              assertFalse(isVisibleByXpath("//td[contains(text(),'Sample text for field help - label left')]"));
93          }
94  
95          if (isElementPresentByXpath("//td[contains(text(),'Sample text for field help - label right')]")) {
96              assertFalse(isVisibleByXpath("//td[contains(text(),'Sample text for field help - label right')]"));
97          }
98  
99          if (isElementPresentByXpath("//td[contains(text(),'Sample text for field help - label top')]")) {
100             assertFalse(isVisibleByXpath("//td[contains(text(),'Sample text for field help - label top')]"));
101         }
102 
103         if (isElementPresentByXpath("//td[contains(text(),'Sample text for standalone help widget tooltip which will never be rendered')]")) {
104             assertFalse(isVisibleByXpath("//td[contains(text(),'Sample text for standalone help widget tooltip which will never be rendered')]"));
105         }
106 
107         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')]")) {
108             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')]"));
109         }
110 
111         if (isElementPresentByXpath("//td[contains(text(),'Sample text for label tooltip - this will not be rendered as it is overridden by the help tooltip')]")) {
112             assertFalse(isVisibleByXpath("//td[contains(text(),'Sample text for label tooltip - this will not be rendered as it is overridden by the help tooltip')]"));
113         }
114 
115         if (isElementPresentByXpath("//td[contains(text(),'Sample text for field help - there is also an on-focus tooltip')]")) {
116             assertFalse(isVisibleByXpath("//td[contains(text(),'Sample text for field help - there is also an on-focus tooltip')]"));
117         }
118 
119         if (isElementPresentByXpath("//td[contains(text(),'Sample text for on-focus event tooltip')]")) {
120             assertFalse(isVisibleByXpath("//td[contains(text(),'Sample text for on-focus event tooltip')]"));
121         }
122 
123         if (isElementPresentByXpath("//td[contains(text(),'Sample text for check box help')]")) {
124             assertFalse(isVisibleByXpath("//td[contains(text(),'Sample text for check box help')]"));
125         }
126 
127         // test tooltip help of section header
128         fireMouseOverEventByXpath("//section[@id='ConfigurationTestView-Help-Section1']/header/h3[@class='uif-headerText']");
129         waitForElementPresentByXpath("//div[@class='popover top in']");
130 
131         // verify that no external help exist
132         assertFalse(isElementPresent("#ConfigurationTestView-Help-Section1 input.uif-helpImage"));
133 
134         // test tooltip help of field with label to the left
135         fireMouseOverEventByXpath("//label[@id='field-label-left_label']");
136         waitForElementPresentByXpath("//div[@class='popover top in']");
137 
138         // test tooltip help of field with label to the right
139         fireMouseOverEventByXpath("//label[@id='field-label-right_label']");
140         waitForElementPresentByXpath("//div[@class='popover top in']");
141 
142         // test tooltip help of field with label to the top
143         fireMouseOverEventByXpath("//label[@id='field-label-top_label']");
144         waitForElementPresentByXpath("//div[@class='popover top in']");
145         
146         // verify that standalone help with tooltip is not rendered
147         assertFalse(isElementPresentByXpath("//*[@id='standalone-help-not-rendered']"));
148 
149         // test tooltip help when it overrides a tooltip
150         fireMouseOverEventByXpath("//label[@id='override-tooltip_label']");
151         waitForElementPresentByXpath("//div[@class='popover top in']");
152         if (isElementPresentByXpath("//td[contains(text(),'Sample text for label tooltip - this will not be rendered as it is overridden by the help tooltip')]")) {
153             assertFalse(isVisibleByXpath("//td[contains(text(),'Sample text for label tooltip - this will not be rendered as it is overridden by the help tooltip')]"));
154         }
155 
156         // test tooltip help in conjunction with a focus event tooltip
157         fireMouseOverEventByXpath("//input[@id='on-focus-tooltip_control']");
158         waitForElementPresentByXpath("//div[@class='popover top in']");
159         fireMouseOverEventByXpath("//label[@id='on-focus-tooltip_label']");
160         waitForElementPresentByXpath("//div[@class='popover top in']");
161 
162         // test tooltip help against a check box - help contains html
163         fireMouseOverEventByXpath("//label[@id='checkbox_label']");
164         waitForElementPresentByXpath("//div[@class='popover top in']");
165     }
166 
167     /**
168      * Test the tooltip help on the sub-section and fields that are display only
169      */
170     protected void testDisplayOnlyTooltipHelp() throws Exception {
171 
172         // test tooltip help of sub-section header
173         fireMouseOverEventByXpath("//section[@data-parent='ConfigurationTestView-Help-Section1']/header/h4");
174         waitForElementPresentByXpath("//td[contains(text(),'Sample text for sub-section help')]");
175 
176         // test tooltip help of display only data field
177         fireMouseOverEventByXpath("//label[@for='display-field_control']");
178         waitForElementPresentByXpath("//td[contains(text(),'Sample text for read only field help')]");
179     }
180 
181     /**
182      * Test the tooltip help on the section and fields with no content
183      */
184     protected void testMissingTooltipHelp() throws Exception {
185 
186         // test tooltip help of section header
187         fireMouseOverEventByXpath("//section[@id='ConfigurationTestView-Help-Section2']/div");
188         assertFalse(isElementPresentByXpath("//div[@class='jquerybubblepopup jquerybubblepopup-black' and @style='opacity: 0; top: 627px; left: 2px; position: absolute; display: block;']"));
189 
190         // test tooltip help of field
191         fireMouseOverEventByXpath("//label[@id='missing-tooltip-help_label']");
192         assertFalse(isElementPresentByXpath("//div[@class='jquerybubblepopup jquerybubblepopup-black' and @style='opacity: 0; top: 627px; left: 2px; position: absolute; display: block;']"));
193     }
194 
195     /**
196      * Test the tooltip and external help on the view
197      */
198     protected void testViewHelp() throws Exception {
199         // test tooltip help
200         fireEvent("field102", "blur");
201         fireMouseOverEventByXpath("//label[@id='field-label-left_label']");
202         waitForTextPresent("Sample text for field help - label left");
203 
204         // test external help
205         waitAndClickByXpath(HELP_FOR_CONFIGURATION_TEST_VIEW_XPATH);
206         Thread.sleep(5000);
207         switchToWindow("Kuali Foundation");
208         Thread.sleep(5000);
209         switchToWindow(CONFIGURATION_VIEW_WINDOW_TITLE);
210     }
211 }