View Javadoc

1   /*
2    * $Id: TooltipTest.java 651946 2008-04-27 13:41:38Z apetrelli $
3    *
4    * Licensed to the Apache Software Foundation (ASF) under one
5    * or more contributor license agreements.  See the NOTICE file
6    * distributed with this work for additional information
7    * regarding copyright ownership.  The ASF licenses this file
8    * to you under the Apache License, Version 2.0 (the
9    * "License"); you may not use this file except in compliance
10   * with the License.  You may obtain a copy of the License at
11   *
12   *  http://www.apache.org/licenses/LICENSE-2.0
13   *
14   * Unless required by applicable law or agreed to in writing,
15   * software distributed under the License is distributed on an
16   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17   * KIND, either express or implied.  See the License for the
18   * specific language governing permissions and limitations
19   * under the License.
20   */
21  
22  package org.apache.struts2.views.jsp.ui;
23  
24  import java.util.HashMap;
25  
26  import org.apache.struts2.TestConfigurationProvider;
27  import org.apache.struts2.views.jsp.AbstractUITagTest;
28  import org.apache.struts2.views.jsp.ParamTag;
29  import org.apache.struts2.views.jsp.StrutsMockBodyContent;
30  
31  import com.mockobjects.servlet.MockJspWriter;
32  
33  /***
34   * UI components Tooltip test case.
35   */
36  public class TooltipTest extends AbstractUITagTest {
37  
38      public void testWithoutFormOverriding() throws Exception {
39  
40          // we test it on textfield component, but since the tooltip are common to
41          // all components, it will be the same for other components as well.
42          FormTag formTag = new FormTag();
43          formTag.setPageContext(pageContext);
44          formTag.setId("myFormId");
45          formTag.setAction("testAction");
46          formTag.setName("myForm");
47  
48  
49          TextFieldTag tag = new TextFieldTag();
50          tag.setPageContext(pageContext);
51          tag.setLabel("MyLabel");
52          tag.setId("myId");
53  
54  
55          tag.setTooltip("myTooltip");
56          tag.setTooltipConfig(
57                  "#{" +
58                          "'tooltipIcon':'/struts/tooltip/myTooltip.gif', " +
59                          "'tooltipDelay':'500', " +
60                          "'jsTooltipEnabled':'true' "+
61                          "}"
62          );
63  
64          formTag.doStartTag();
65          tag.doStartTag();
66          tag.doEndTag();
67          formTag.doEndTag();
68  
69          verify(TooltipTest.class.getResource("tooltip-1.txt"));
70      }
71      
72      public void testWithoutFormOverridingNew() throws Exception {
73  
74          // we test it on textfield component, but since the tooltip are common to
75          // all components, it will be the same for other components as well.
76          FormTag formTag = new FormTag();
77          formTag.setPageContext(pageContext);
78          formTag.setId("myFormId");
79          formTag.setAction("testAction");
80          formTag.setName("myForm");
81  
82  
83          TextFieldTag tag = new TextFieldTag();
84          tag.setPageContext(pageContext);
85          tag.setLabel("MyLabel");
86          tag.setId("myId");
87  
88  
89          //same parameters as the OGNL map configuration, output must be the same
90          tag.setTooltip("myTooltip");
91          tag.setTooltipIconPath("/struts/tooltip/myTooltip.gif");
92          tag.setTooltipDelay("500");
93          tag.setJavascriptTooltip("true");
94         
95  
96          formTag.doStartTag();
97          tag.doStartTag();
98          tag.doEndTag();
99          formTag.doEndTag();
100 
101         verify(TooltipTest.class.getResource("tooltip-1.txt"));
102     }
103 
104     public void testWithFormOverriding() throws Exception {
105 
106         FormTag formTag = new FormTag();
107         formTag.setPageContext(pageContext);
108         formTag.setName("myForm");
109         formTag.setId("myFormId");
110         formTag.setAction("testAction");
111 
112         formTag.setTooltipConfig(
113                 "#{" +
114                 "'tooltipIcon':'/struts/tooltip/myTooltip.gif', " +
115                 "'tooltipDelay':'500', " +
116                 "'jsTooltipEnabled':'true' "+
117                 "}"
118         );
119 
120 
121         TextFieldTag tag = new TextFieldTag();
122         tag.setPageContext(pageContext);
123         tag.setLabel("MyLabel");
124         tag.setId("myId");
125 
126         tag.setTooltip("myTooltip");
127 
128         formTag.doStartTag();
129         tag.doStartTag();
130         tag.doEndTag();
131         formTag.doEndTag();
132 
133         verify(TooltipTest.class.getResource("tooltip-2.txt"));
134     }
135     
136     public void testWithFormOverridingNew() throws Exception {
137 
138         FormTag formTag = new FormTag();
139         formTag.setPageContext(pageContext);
140         formTag.setName("myForm");
141         formTag.setId("myFormId");
142         formTag.setAction("testAction");
143 
144         // same parameters as the OGNL map configuration, output must be the same
145         formTag.setTooltip("myTooltip");
146         formTag.setTooltipIconPath("/struts/tooltip/myTooltip.gif");
147         formTag.setTooltipDelay("500");
148         formTag.setJavascriptTooltip("true");
149 
150 
151         TextFieldTag tag = new TextFieldTag();
152         tag.setPageContext(pageContext);
153         tag.setLabel("MyLabel");
154         tag.setId("myId");
155 
156         tag.setTooltip("myTooltip");
157 
158         formTag.doStartTag();
159         tag.doStartTag();
160         tag.doEndTag();
161         formTag.doEndTag();
162 
163         verify(TooltipTest.class.getResource("tooltip-2.txt"));
164     }
165 
166     public void testWithPartialFormOverriding() throws Exception {
167 
168         FormTag formTag = new FormTag();
169         formTag.setName("myForm");
170         formTag.setPageContext(pageContext);
171         formTag.setId("myFormId");
172         formTag.setAction("testAction");
173 
174         formTag.setTooltipConfig(
175                 "#{" +
176                 "'tooltipIcon':'/struts/tooltip/myTooltip.gif', " +
177                 "'tooltipDelay':'500', " +
178                 "'jsTooltipEnabled':'true' "+
179                 "}"
180         );
181 
182 
183         TextFieldTag tag = new TextFieldTag();
184         tag.setPageContext(pageContext);
185         tag.setLabel("MyLabel");
186         tag.setId("myId");
187 
188         tag.setTooltip("myTooltip");
189         tag.setTooltipConfig(
190                 "#{" +
191                 "'tooltipIcon':'/struts/tooltip/myTooltip2.gif', " +
192                 "'tooltipDelay':'5000' " +
193                 "}"
194         );
195 
196         formTag.doStartTag();
197         tag.doStartTag();
198         tag.doEndTag();
199         formTag.doEndTag();
200 
201         verify(TooltipTest.class.getResource("tooltip-3.txt"));
202     }
203 
204     public void testWithPartialFormOverridingNew() throws Exception {
205 
206         FormTag formTag = new FormTag();
207         formTag.setName("myForm");
208         formTag.setPageContext(pageContext);
209         formTag.setId("myFormId");
210         formTag.setAction("testAction");
211 
212         // same parameters as the OGNL map configuration, output must be the same
213         formTag.setTooltip("myTooltip");
214         formTag.setTooltipIconPath("/struts/tooltip/myTooltip.gif");
215         formTag.setTooltipDelay("500");
216         formTag.setJavascriptTooltip("true");
217 
218 
219         TextFieldTag tag = new TextFieldTag();
220         tag.setPageContext(pageContext);
221         tag.setLabel("MyLabel");
222         tag.setId("myId");
223 
224 
225         //same parameters as the OGNL map configuration, output must be the same
226         tag.setTooltip("myTooltip");
227         tag.setTooltipIconPath("/struts/tooltip/myTooltip2.gif");
228         tag.setTooltipDelay("5000");
229         tag.setJavascriptTooltip("true");
230 
231         formTag.doStartTag();
232         tag.doStartTag();
233         tag.doEndTag();
234         formTag.doEndTag();
235 
236         verify(TooltipTest.class.getResource("tooltip-3.txt"));
237     }
238 
239     public void testUsingParamValueToSetConfigurations() throws Exception {
240         FormTag formTag = new FormTag();
241         formTag.setName("myForm");
242         formTag.setPageContext(pageContext);
243         formTag.setId("myFormId");
244         formTag.setAction("testAction");
245 
246 
247         ParamTag formParamTag = new ParamTag();
248         formParamTag.setPageContext(pageContext);
249         formParamTag.setName("tooltipConfig");
250         formParamTag.setValue(
251                 "#{" +
252                 "'tooltipIcon':'/struts/tooltip/myTooltip.gif', " +
253                 "'tooltipDelay':'500', " +
254                 "'jsTooltipEnabled':'true' "+
255                 "}"
256         );
257 
258 
259         TextFieldTag tag = new TextFieldTag();
260         tag.setPageContext(pageContext);
261         tag.setLabel("MyLabel");
262         tag.setId("myId");
263         tag.setTooltip("myTooltip");
264 
265         ParamTag textFieldParamTag = new ParamTag();
266         textFieldParamTag.setPageContext(pageContext);
267         textFieldParamTag.setName("tooltipConfig");
268         textFieldParamTag.setValue(
269                 "#{" +
270                 "'tooltipIcon':'/struts/tooltip/myTooltip2.gif', " +
271                 "'tooltipDelay':'5000' "+
272                 "}"
273         );
274 
275         formTag.doStartTag();
276         formParamTag.doStartTag();
277         formParamTag.doEndTag();
278         tag.doStartTag();
279         textFieldParamTag.doStartTag();
280         textFieldParamTag.doEndTag();
281         tag.doEndTag();
282         formTag.doEndTag();
283 
284         verify(TooltipTest.class.getResource("tooltip-3.txt"));
285     }
286 
287 
288     public void testUsingParamBodyValueToSetConfigurations() throws Exception {
289 
290         FormTag formTag = new FormTag();
291         formTag.setName("myForm");
292         formTag.setPageContext(pageContext);
293         formTag.setId("myFormId");
294         formTag.setAction("testAction");
295 
296 
297         ParamTag formParamTag = new ParamTag();
298         formParamTag.setPageContext(pageContext);
299         formParamTag.setName("tooltipConfig");
300         StrutsMockBodyContent bodyContent = new StrutsMockBodyContent(new MockJspWriter());
301         bodyContent.setString(
302                 "tooltipIcon=/struts/tooltip/myTooltip.gif| " +
303                 "tooltipDelay=500| " +
304                 "jsTooltipEnabled=true "
305         );
306         formParamTag.setBodyContent(bodyContent);
307 
308         TextFieldTag tag = new TextFieldTag();
309         tag.setPageContext(pageContext);
310         tag.setLabel("MyLabel");
311         tag.setId("myId");
312         tag.setTooltip("myTooltip");
313 
314 
315         ParamTag textFieldParamTag = new ParamTag();
316         textFieldParamTag.setPageContext(pageContext);
317         textFieldParamTag.setName("tooltipConfig");
318         StrutsMockBodyContent bodyContent2 = new StrutsMockBodyContent(new MockJspWriter());
319         bodyContent2.setString(
320                 "tooltipIcon=/struts/tooltip/myTooltip2.gif| " +
321                 "tooltipDelay=5000 "
322         );
323         textFieldParamTag.setBodyContent(bodyContent2);
324 
325         formTag.doStartTag();
326         formParamTag.doStartTag();
327         formParamTag.doEndTag();
328         tag.doStartTag();
329         textFieldParamTag.doStartTag();
330         textFieldParamTag.doEndTag();
331         tag.doEndTag();
332         formTag.doEndTag();
333 
334         System.out.println(writer.toString());
335 
336         verify(TooltipTest.class.getResource("tooltip-3.txt"));
337     }
338 
339     /***
340      * @throws Exception 
341      * 
342      */
343     public void setUp() throws Exception {
344         super.setUp();
345         initDispatcher(new HashMap<String,String>(){{ 
346             put("configProviders", TestConfigurationProvider.class.getName());
347         }});
348     }
349 }