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 import java.util.ArrayList;
23 import java.util.List;
24
25 import javax.faces.component.UISelectItem;
26 import javax.faces.component.UISelectItems;
27 import javax.faces.component.behavior.AjaxBehavior;
28 import javax.faces.component.html.HtmlSelectManyListbox;
29 import javax.faces.component.html.HtmlSelectOneListbox;
30 import javax.faces.model.SelectItem;
31
32 import junit.framework.Test;
33 import junit.framework.TestSuite;
34
35 import org.apache.myfaces.test.utils.HtmlCheckAttributesUtil;
36 import org.apache.myfaces.test.utils.HtmlRenderedAttr;
37 import org.apache.myfaces.test.base.AbstractJsfTestCase;
38 import org.apache.myfaces.test.mock.MockRenderKitFactory;
39 import org.apache.myfaces.test.mock.MockResponseWriter;
40
41
42
43
44
45 public class HtmlListboxRendererTest extends AbstractJsfTestCase
46 {
47 private MockResponseWriter writer ;
48 private HtmlSelectOneListbox selectOneListbox;
49 private HtmlSelectManyListbox selectManyListbox;
50
51 public HtmlListboxRendererTest(String name)
52 {
53 super(name);
54 }
55
56 public static Test suite() {
57 return new TestSuite(HtmlListboxRendererTest.class);
58 }
59
60 public void setUp() throws Exception
61 {
62 super.setUp();
63
64 selectOneListbox = new HtmlSelectOneListbox();
65 selectManyListbox = new HtmlSelectManyListbox();
66
67 writer = new MockResponseWriter(new StringWriter(), null, null);
68 facesContext.setResponseWriter(writer);
69
70 facesContext.getViewRoot().setRenderKitId(MockRenderKitFactory.HTML_BASIC_RENDER_KIT);
71 facesContext.getRenderKit().addRenderer(
72 selectOneListbox.getFamily(),
73 selectOneListbox.getRendererType(),
74 new HtmlListboxRenderer());
75 facesContext.getRenderKit().addRenderer(
76 selectManyListbox.getFamily(),
77 selectManyListbox.getRendererType(),
78 new HtmlListboxRenderer());
79 facesContext.getAttributes().put("org.apache.myfaces.RENDERED_JSF_JS", Boolean.TRUE);
80 }
81
82 public void tearDown() throws Exception
83 {
84 super.tearDown();
85 selectOneListbox = null;
86 writer = null;
87 }
88
89 public void testSelectOneHtmlPropertyPassTru() throws Exception
90 {
91 HtmlRenderedAttr[] attrs = HtmlCheckAttributesUtil.generateBasicAttrs();
92
93 List items = new ArrayList();
94 items.add(new SelectItem("mars"));
95
96 UISelectItems selectItems = new UISelectItems();
97 selectItems.setValue(items);
98
99 selectOneListbox.getChildren().add(selectItems);
100
101 HtmlCheckAttributesUtil.checkRenderedAttributes(
102 selectOneListbox, facesContext, writer, attrs);
103 if(HtmlCheckAttributesUtil.hasFailedAttrRender(attrs)) {
104 fail(HtmlCheckAttributesUtil.constructErrorMessage(attrs, writer.getWriter().toString()));
105 }
106 }
107
108 public void testSelectManyHtmlPropertyPassTru() throws Exception
109 {
110 HtmlRenderedAttr[] attrs = HtmlCheckAttributesUtil.generateBasicAttrs();
111
112 List items = new ArrayList();
113 items.add(new SelectItem("mars"));
114
115 UISelectItems selectItems = new UISelectItems();
116 selectItems.setValue(items);
117
118 selectManyListbox.getChildren().add(selectItems);
119
120 HtmlCheckAttributesUtil.checkRenderedAttributes(
121 selectManyListbox, facesContext, writer, attrs);
122 if(HtmlCheckAttributesUtil.hasFailedAttrRender(attrs)) {
123 fail(HtmlCheckAttributesUtil.constructErrorMessage(attrs, writer.getWriter().toString()));
124 }
125 }
126
127
128
129
130 public void testClientBehaviorHolderRendersIdAndNameSelectOneListbox()
131 {
132 UISelectItem item1 = new UISelectItem();
133 item1.setItemLabel("#1");
134 item1.setItemValue("#1");
135
136 UISelectItem item2 = new UISelectItem();
137 item2.setItemLabel("#2");
138 item2.setItemValue("#2");
139
140 selectOneListbox.addClientBehavior("keypress", new AjaxBehavior());
141 try
142 {
143 selectOneListbox.getChildren().add(item1);
144 selectOneListbox.getChildren().add(item2);
145 selectOneListbox.encodeAll(facesContext);
146 String output = ((StringWriter) writer.getWriter()).getBuffer().toString();
147 assertTrue(output.matches(".+id=\".+\".+"));
148 assertTrue(output.matches(".+name=\".+\".+"));
149 }
150 catch (Exception e)
151 {
152 fail(e.getMessage());
153 }
154
155 }
156
157
158
159
160 public void testClientBehaviorHolderRendersIdAndNameSelectManyListbox()
161 {
162 UISelectItem item1 = new UISelectItem();
163 item1.setItemLabel("#1");
164 item1.setItemValue("#1");
165
166 UISelectItem item2 = new UISelectItem();
167 item2.setItemLabel("#2");
168 item2.setItemValue("#2");
169
170 selectManyListbox.addClientBehavior("keypress", new AjaxBehavior());
171 try
172 {
173 selectManyListbox.getChildren().add(item1);
174 selectManyListbox.getChildren().add(item2);
175 selectManyListbox.encodeAll(facesContext);
176 String output = ((StringWriter) writer.getWriter()).getBuffer().toString();
177 assertTrue(output.matches(".+id=\".+\".+"));
178 assertTrue(output.matches(".+name=\".+\".+"));
179 }
180 catch (Exception e)
181 {
182 fail(e.getMessage());
183 }
184
185 }
186 }