1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.myfaces.custom.picklist;
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.renderkit.html.ext.MockBean;
30 import org.apache.myfaces.renderkit.html.ext.MockIntegerConverter;
31 import org.apache.myfaces.test.base.AbstractJsfTestCase;
32 import org.apache.myfaces.test.el.MockValueExpression;
33 import org.apache.myfaces.test.mock.MockResponseWriter;
34
35
36
37
38
39
40
41 public class HtmlPicklistRendererValueTest extends AbstractJsfTestCase
42 {
43
44 private HtmlPicklistRenderer _renderer;
45 private MockResponseWriter _writer;
46 private StringWriter _stringWriter;
47
48 public HtmlPicklistRendererValueTest(String name)
49 {
50 super(name);
51 }
52
53 @Override
54 protected void setUp() throws Exception
55 {
56 super.setUp();
57
58 _renderer = new HtmlPicklistRenderer();
59 _stringWriter = new StringWriter();
60 _writer = new MockResponseWriter(_stringWriter, "text/html", "utf-8");
61
62 facesContext.setResponseWriter(_writer);
63 }
64
65 @Override
66 protected void tearDown() throws Exception
67 {
68 _renderer = null;
69 _stringWriter = null;
70 _writer = null;
71
72 super.tearDown();
73 }
74
75 @SuppressWarnings("unchecked")
76 public void testValueTypeRender() throws IOException
77 {
78 MockBean bean = new MockBean();
79 externalContext.getApplicationMap().put("bean", bean);
80 ValueExpression beanVE = new MockValueExpression("#{bean.values}", Object.class);
81
82
83 HtmlSelectManyPicklist selectMany = new HtmlSelectManyPicklist();
84 selectMany.setValueExpression("value", beanVE);
85 selectMany.setValueType(Integer.class.getName());
86
87
88 selectMany.setAddButtonStyle("style");
89 selectMany.setAddButtonStyleClass("styleClass");
90 selectMany.setAddAllButtonStyle("style");
91 selectMany.setAddAllButtonStyleClass("styleClass");
92 selectMany.setRemoveButtonStyle("style");
93 selectMany.setRemoveButtonStyleClass("styleClass");
94 selectMany.setRemoveAllButtonStyle("style");
95 selectMany.setRemoveAllButtonStyleClass("styleClass");
96
97
98 UISelectItem item = new UISelectItem();
99 item.setItemValue("1");
100 selectMany.getChildren().add(item);
101
102
103 application.addConverter(Integer.class, MockIntegerConverter.class.getName());
104
105
106 _renderer.encodeEnd(facesContext, selectMany);
107 final String output = _stringWriter.toString();
108
109
110
111 assertTrue(output.contains("value=\"11\""));
112 }
113
114 @SuppressWarnings({ "unchecked", "serial" })
115 public void testValueTypeSubmit() throws IOException
116 {
117 MockBean bean = new MockBean();
118 externalContext.getApplicationMap().put("bean", bean);
119 ValueExpression beanVE = new MockValueExpression("#{bean.values}", Object.class)
120 {
121
122 @Override
123 public Class getType(ELContext context)
124 {
125
126
127 return Collection.class;
128 }
129
130 };
131
132
133 HtmlSelectManyPicklist selectMany = new HtmlSelectManyPicklist();
134 selectMany.setValueExpression("value", beanVE);
135 selectMany.setValueType(Integer.class.getName());
136
137
138 UISelectItem item = new UISelectItem();
139 item.setItemValue("1");
140 selectMany.getChildren().add(item);
141
142
143 Object convertedValue = _renderer.getConvertedValue(facesContext, selectMany, new String[] {"1"});
144
145
146 assertTrue(convertedValue instanceof Collection);
147
148
149
150 assertEquals(1, ((Collection) convertedValue).iterator().next());
151 }
152
153 }