1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.myfaces.renderkit.html;
20
21 import java.io.StringWriter;
22
23 import javax.faces.component.UIParameter;
24 import javax.faces.component.behavior.AjaxBehavior;
25 import javax.faces.component.html.HtmlForm;
26 import javax.faces.component.html.HtmlOutcomeTargetButton;
27
28 import junit.framework.Test;
29 import junit.framework.TestSuite;
30
31 import org.apache.myfaces.application.NavigationHandlerImpl;
32 import org.apache.myfaces.shared.renderkit.JSFAttr;
33 import org.apache.myfaces.shared.renderkit.html.HTML;
34 import org.apache.myfaces.test.base.AbstractJsfTestCase;
35 import org.apache.myfaces.test.mock.MockRenderKitFactory;
36 import org.apache.myfaces.test.mock.MockResponseWriter;
37
38
39
40
41
42
43
44 public class HtmlOutcomeTargetButtonRendererTest extends AbstractJsfTestCase
45 {
46
47 private MockResponseWriter writer;
48 private HtmlOutcomeTargetButton outcomeTargetButton;
49 private HtmlForm form;
50
51 public HtmlOutcomeTargetButtonRendererTest(String name)
52 {
53 super(name);
54 }
55
56 public static Test suite()
57 {
58 return new TestSuite(HtmlOutcomeTargetButtonRendererTest.class);
59 }
60
61 public void setUp() throws Exception
62 {
63 super.setUp();
64 writer = new MockResponseWriter(new StringWriter(), null, null);
65 facesContext.setResponseWriter(writer);
66 facesContext.getApplication().setNavigationHandler(new NavigationHandlerImpl());
67 outcomeTargetButton = new HtmlOutcomeTargetButton();
68 form = new HtmlForm();
69 outcomeTargetButton.setParent(form);
70
71 facesContext.getViewRoot().setRenderKitId(MockRenderKitFactory.HTML_BASIC_RENDER_KIT);
72 facesContext.getRenderKit().addRenderer(
73 outcomeTargetButton.getFamily(),
74 outcomeTargetButton.getRendererType(),
75 new HtmlOutcomeTargetButtonRenderer());
76 facesContext.getRenderKit().addRenderer(
77 form.getFamily(),
78 form.getRendererType(),
79 new HtmlFormRenderer());
80
81 facesContext.getAttributes().put("org.apache.myfaces.RENDERED_JSF_JS", Boolean.TRUE);
82 }
83
84 public void tearDown() throws Exception
85 {
86 super.tearDown();
87 writer = null;
88 form = null;
89 outcomeTargetButton = null;
90 }
91
92
93
94
95 public void testClientBehaviorHolderRendersIdAndName()
96 {
97 outcomeTargetButton.addClientBehavior("keypress", new AjaxBehavior());
98 try
99 {
100 outcomeTargetButton.encodeAll(facesContext);
101 String output = ((StringWriter) writer.getWriter()).getBuffer().toString();
102 assertTrue(output.matches(".+id=\".+\".+"));
103 assertTrue(output.matches(".+name=\".+\".+"));
104 }
105 catch (Exception e)
106 {
107 fail(e.getMessage());
108 }
109
110 }
111
112
113
114
115
116
117
118 public void testOutcomeTargetRendersNavigationCaseParameters() throws Exception
119 {
120
121 outcomeTargetButton.getAttributes().put("includeViewParams", false);
122 outcomeTargetButton.getAttributes().put("outcome",
123 "test.xhtml?param1=value1¶m2=value2");
124
125
126 outcomeTargetButton.encodeAll(facesContext);
127 String output = ((StringWriter) writer.getWriter()).getBuffer().toString();
128
129
130 assertTrue(output.contains("param1=value1"));
131 assertTrue(output.contains("param2=value2"));
132 }
133
134
135
136
137
138 public void testFragment() throws Exception
139 {
140
141 final String fragment = "end";
142 outcomeTargetButton.getAttributes().put("fragment", fragment);
143 outcomeTargetButton.getAttributes().put("outcome",
144 "test.xhtml?param1=value1");
145
146
147 outcomeTargetButton.encodeAll(facesContext);
148 String output = ((StringWriter) writer.getWriter()).getBuffer().toString();
149
150
151 assertTrue(output.contains("param1=value1#" + fragment));
152 }
153
154
155
156
157
158 public void testIncludesUIParameterInURL()
159 {
160
161 UIParameter param = new UIParameter();
162 param.setName("myParameter");
163 param.setValue("myValue");
164 outcomeTargetButton.getChildren().add(param);
165
166 try
167 {
168 outcomeTargetButton.encodeAll(facesContext);
169 String output = ((StringWriter) writer.getWriter()).getBuffer().toString();
170 assertTrue(output.contains("myParameter=myValue"));
171 }
172 catch (Exception e)
173 {
174 fail(e.getMessage());
175 }
176 }
177
178
179
180
181
182 public void testSkipsNullValueOfUIParameterInURL()
183 {
184
185 UIParameter param = new UIParameter();
186 param.setName("myNullParameter");
187 param.setValue(null);
188 outcomeTargetButton.getChildren().add(param);
189
190 try
191 {
192 outcomeTargetButton.encodeAll(facesContext);
193 String output = ((StringWriter) writer.getWriter()).getBuffer().toString();
194 assertFalse(output.contains("myNullParameter"));
195 }
196 catch (Exception e)
197 {
198 fail(e.getMessage());
199 }
200 }
201
202
203
204
205 public void testDisabledAttribute()
206 {
207 outcomeTargetButton.getAttributes().put(JSFAttr.DISABLED_ATTR, "true");
208 try
209 {
210 outcomeTargetButton.encodeAll(facesContext);
211 String output = ((StringWriter) writer.getWriter()).getBuffer().toString();
212
213
214 assertFalse(output.contains(HTML.ONCLICK_ATTR));
215 assertTrue(output.contains(HTML.DISABLED_ATTR));
216 }
217 catch (Exception e)
218 {
219 fail(e.getMessage());
220 }
221
222 }
223
224 }