1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.shale.usecases.rolodex;
18
19 import java.io.UnsupportedEncodingException;
20 import java.net.URLEncoder;
21 import java.util.Iterator;
22 import java.util.List;
23
24 import javax.faces.el.ValueBinding;
25
26 import junit.framework.Test;
27 import junit.framework.TestSuite;
28
29 import org.apache.shale.clay.component.Clay;
30 import org.apache.shale.clay.config.beans.ComponentBean;
31 import org.apache.shale.test.base.AbstractViewControllerTestCase;
32
33 public class RolodexTestCase extends AbstractViewControllerTestCase {
34
35
36 public RolodexTestCase(String name) {
37 super(name);
38 }
39
40
41 public static Test suite() {
42
43 return (new TestSuite(RolodexTestCase.class));
44
45 }
46
47 private Rolodex viewController = null;
48
49
50 protected void setUp() throws Exception {
51 super.setUp();
52
53
54 viewController = new Rolodex();
55
56
57 ValueBinding vb = application.createValueBinding("rolodex");
58 vb.setValue(facesContext, viewController);
59
60
61 vb = application.createValueBinding("rolodexDao");
62 vb.setValue(facesContext, new RolodexDao());
63
64 }
65
66
67 protected void tearDown() throws Exception {
68 super.tearDown();
69
70 viewController = null;
71 }
72
73
74 public void testCreateTabs() {
75
76
77
78
79
80
81
82
83 ComponentBean displayElementRoot = new ComponentBean();
84
85
86
87 Clay component = new Clay();
88 component.setId("RUNTIME");
89 component.setManagedBeanName("rolodex");
90 component.setShapeValidator("#{rolodex.createTabs}");
91
92
93 viewController.setSelectedTab(RolodexDao.TAB_INDEX.length - 1);
94
95
96
97 viewController.createTabs(facesContext, component, displayElementRoot);
98
99
100
101
102 int n = (RolodexDao.TAB_INDEX.length * 6) + 2;
103
104 assertEquals("#Children", n, displayElementRoot.getChildren().size());
105
106 }
107
108
109 public void testChangeTab() {
110
111 QueryParam paramObj = new QueryParam();
112 for (int t = 0; t < RolodexDao.TAB_INDEX.length; t++) {
113
114
115 paramObj.setTabIndex(String.valueOf(t));
116 ValueBinding vb = application.createValueBinding("queryParam");
117 vb.setValue(facesContext, paramObj);
118
119
120 viewController.setSelectedContact(new Contact());
121
122
123
124 String forward = viewController.changeTab();
125 assertEquals("forward", "rolodex$test", forward);
126
127
128 assertNull("selectedContact", viewController.getSelectedContact());
129
130
131 assertEquals("selectedTab", t, viewController.getSelectedTab());
132
133 }
134
135 }
136
137
138 public void testContactsForTab() {
139
140
141 int[] knownGoodState = {12, 1, 0, 0, 0, 0, 0, 0, 0 };
142
143 for (int i = 0; i < RolodexDao.TAB_INDEX.length; i++) {
144 viewController.setSelectedTab(i);
145 List contacts = viewController.getContactsForTab();
146 assertEquals("contacts on page", knownGoodState[i], contacts.size());
147 }
148
149 }
150
151
152 public void testSelectContact() {
153
154 viewController.setSelectedTab(0);
155
156 List contacts = viewController.getContactsForTab();
157
158 QueryParam paramObj = new QueryParam();
159 Iterator ci = contacts.iterator();
160 while (ci.hasNext()) {
161 Contact contact = (Contact) ci.next();
162 String nameParam = null;
163
164 try {
165 nameParam = URLEncoder.encode(contact.getName(), "UTF-8");
166 } catch (UnsupportedEncodingException e) {
167 }
168
169 viewController.setSelectedContact(null);
170
171 paramObj.setSelectedName(nameParam);
172 ValueBinding vb = application.createValueBinding("queryParam");
173 vb.setValue(facesContext, paramObj);
174
175
176
177
178 String forward = viewController.selectContact();
179 assertEquals("forward", "rolodex$test", forward);
180
181
182 assertNotNull("selectedContact", viewController
183 .getSelectedContact());
184
185
186 assertEquals("contact.name", contact.getName(), viewController
187 .getSelectedContact().getName());
188
189 }
190 }
191
192
193 public void testNewAddDelete() {
194
195
196 viewController.setSelectedContact(null);
197 viewController.newContact();
198 assertNotNull("newContact", viewController.getSelectedContact());
199
200
201 viewController.getSelectedContact().setName("VanMatre, Gary M.");
202 viewController.saveContact();
203
204
205 assertTrue(
206 "last tab",
207 viewController.getSelectedTab() == RolodexDao.TAB_INDEX.length - 1);
208
209 List contacts = viewController.getContactsForTab();
210 assertNotNull(contacts);
211
212
213 assertTrue("#contacts", contacts.size() == 1);
214 Contact contact = (Contact) contacts.get(0);
215 String nameParam = null;
216 try {
217 nameParam = URLEncoder.encode(contact.getName(), "UTF-8");
218 } catch (UnsupportedEncodingException e) {
219 }
220
221 QueryParam paramObj = new QueryParam();
222 paramObj.setSelectedName(nameParam);
223 ValueBinding vb = application.createValueBinding("queryParam");
224 vb.setValue(facesContext, paramObj);
225
226
227
228
229 String forward = viewController.selectContact();
230 assertEquals("forward", "rolodex$test", forward);
231
232
233 assertNotNull("selectedContact", viewController.getSelectedContact());
234
235
236 assertEquals("contact.name", contact.getName(), viewController
237 .getSelectedContact().getName());
238
239
240 viewController.deleteContact();
241
242
243 contacts = viewController.getContactsForTab();
244
245
246 assertTrue("#contacts", contacts.size() == 0);
247
248 }
249
250 }