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.ext;
20
21 import java.io.IOException;
22 import java.io.StringWriter;
23 import java.util.Collection;
24
25 import javax.el.ELContext;
26 import javax.el.ValueExpression;
27 import javax.faces.component.UISelectItem;
28
29 import org.apache.myfaces.component.html.ext.HtmlSelectManyCheckbox;
30 import org.apache.myfaces.test.base.AbstractJsfTestCase;
31 import org.apache.myfaces.test.el.MockValueExpression;
32 import org.apache.myfaces.test.mock.MockResponseWriter;
33
34
35
36
37
38
39
40 public class HtmlCheckboxRendererValueTest extends AbstractJsfTestCase
41 {
42
43 private HtmlCheckboxRenderer _renderer;
44 private MockResponseWriter _writer;
45 private StringWriter _stringWriter;
46
47 public HtmlCheckboxRendererValueTest(String name)
48 {
49 super(name);
50 }
51
52 @Override
53 protected void setUp() throws Exception
54 {
55 super.setUp();
56
57 _renderer = new HtmlCheckboxRenderer();
58 _stringWriter = new StringWriter();
59 _writer = new MockResponseWriter(_stringWriter, "text/html", "utf-8");
60
61 facesContext.setResponseWriter(_writer);
62 }
63
64 @Override
65 protected void tearDown() throws Exception
66 {
67 _renderer = null;
68 _stringWriter = null;
69 _writer = null;
70
71 super.tearDown();
72 }
73
74 @SuppressWarnings("unchecked")
75 public void testValueTypeRender() throws IOException
76 {
77 MockBean bean = new MockBean();
78 externalContext.getApplicationMap().put("bean", bean);
79 ValueExpression beanVE = new MockValueExpression("#{bean.values}", Object.class);
80
81
82 HtmlSelectManyCheckbox selectMany = new HtmlSelectManyCheckbox();
83 selectMany.setValueExpression("value", beanVE);
84 selectMany.setValueType(Integer.class.getName());
85
86
87 UISelectItem item = new UISelectItem();
88 item.setItemValue("1");
89 selectMany.getChildren().add(item);
90
91
92 application.addConverter(Integer.class, MockIntegerConverter.class.getName());
93
94
95 _renderer.encodeEnd(facesContext, selectMany);
96 final String output = _stringWriter.toString();
97
98
99
100 assertTrue(output.contains("value=\"11\""));
101 }
102
103 @SuppressWarnings({ "unchecked", "serial" })
104 public void testValueTypeSubmit() throws IOException
105 {
106 MockBean bean = new MockBean();
107 externalContext.getApplicationMap().put("bean", bean);
108 ValueExpression beanVE = new MockValueExpression("#{bean.values}", Object.class)
109 {
110
111 @Override
112 public Class getType(ELContext context)
113 {
114
115
116 return Collection.class;
117 }
118
119 };
120
121
122 HtmlSelectManyCheckbox selectMany = new HtmlSelectManyCheckbox();
123 selectMany.setValueExpression("value", beanVE);
124 selectMany.setValueType(Integer.class.getName());
125
126
127 UISelectItem item = new UISelectItem();
128 item.setItemValue("1");
129 selectMany.getChildren().add(item);
130
131
132 Object convertedValue = _renderer.getConvertedValue(facesContext, selectMany, new String[] {"1"});
133
134
135 assertTrue(convertedValue instanceof Collection);
136
137
138
139 assertEquals(1, ((Collection) convertedValue).iterator().next());
140 }
141
142 }