KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > tapestry > record > TestSessionPropertyPersistenceStrategy


1 // Copyright 2005 The Apache Software Foundation
2
//
3
// Licensed under the Apache License, Version 2.0 (the "License");
4
// you may not use this file except in compliance with the License.
5
// You may obtain a copy of the License at
6
//
7
// http://www.apache.org/licenses/LICENSE-2.0
8
//
9
// Unless required by applicable law or agreed to in writing, software
10
// distributed under the License is distributed on an "AS IS" BASIS,
11
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
// See the License for the specific language governing permissions and
13
// limitations under the License.
14

15 package org.apache.tapestry.record;
16
17 import java.util.Collection JavaDoc;
18 import java.util.Collections JavaDoc;
19
20 import org.apache.hivemind.test.HiveMindTestCase;
21 import org.apache.tapestry.web.WebRequest;
22 import org.apache.tapestry.web.WebSession;
23 import org.easymock.MockControl;
24
25 /**
26  * Tests for {@link SessionPropertyPersistenceStrategy}.
27  *
28  * @author Howard M. Lewis Ship
29  * @since 4.0
30  */

31 public class TestSessionPropertyPersistenceStrategy extends HiveMindTestCase
32 {
33     private WebRequest newRequest(boolean create, WebSession session)
34     {
35         MockControl control = newControl(WebRequest.class);
36         WebRequest request = (WebRequest) control.getMock();
37
38         request.getSession(create);
39
40         control.setReturnValue(session);
41
42         return request;
43     }
44
45     private WebSession newSession()
46     {
47         return (WebSession) newMock(WebSession.class);
48     }
49
50     private WebSession newSession(String JavaDoc attributeName, Object JavaDoc value)
51     {
52         MockControl control = newControl(WebSession.class);
53         WebSession session = (WebSession) control.getMock();
54
55         session.getAttributeNames();
56
57         control.setReturnValue(Collections.singletonList(attributeName));
58
59         if (value != null)
60         {
61             session.getAttribute(attributeName);
62             control.setReturnValue(value);
63         }
64
65         return session;
66     }
67
68     private WebSession newSession(String JavaDoc attributeName, boolean remove)
69     {
70         MockControl control = newControl(WebSession.class);
71         WebSession session = (WebSession) control.getMock();
72
73         session.getAttributeNames();
74
75         control.setReturnValue(Collections.singletonList(attributeName));
76
77         if (remove)
78             session.setAttribute(attributeName, null);
79
80         return session;
81     }
82
83     public void testStorePageProperty()
84     {
85         WebSession session = newSession();
86         WebRequest request = newRequest(true, session);
87
88         Object JavaDoc value = new Object JavaDoc();
89
90         session.setAttribute("myapp,Home,foo", value);
91
92         replayControls();
93
94         SessionPropertyPersistenceStrategy s = new SessionPropertyPersistenceStrategy();
95
96         s.setApplicationId("myapp");
97         s.setRequest(request);
98
99         s.store("Home", null, "foo", value);
100
101         verifyControls();
102     }
103
104     public void testClearPageProperty()
105     {
106         WebSession session = newSession();
107         WebRequest request = newRequest(true, session);
108
109         session.setAttribute("myapp,Help,bar", null);
110
111         replayControls();
112
113         SessionPropertyPersistenceStrategy s = new SessionPropertyPersistenceStrategy();
114
115         s.setApplicationId("myapp");
116         s.setRequest(request);
117
118         s.store("Help", null, "bar", null);
119
120         verifyControls();
121     }
122
123     public void testStoreComponentProperty()
124     {
125         WebSession session = newSession();
126         WebRequest request = newRequest(true, session);
127
128         Object JavaDoc value = new Object JavaDoc();
129
130         session.setAttribute("gloop,Nerf,zip.zap,spaz", value);
131
132         replayControls();
133
134         SessionPropertyPersistenceStrategy s = new SessionPropertyPersistenceStrategy();
135
136         s.setApplicationId("gloop");
137         s.setRequest(request);
138
139         s.store("Nerf", "zip.zap", "spaz", value);
140
141         verifyControls();
142     }
143
144     public void testGetStoredChangesNoSession()
145     {
146         WebRequest request = newRequest(false, null);
147
148         replayControls();
149
150         SessionPropertyPersistenceStrategy s = new SessionPropertyPersistenceStrategy();
151         s.setRequest(request);
152
153         assertTrue(s.getStoredChanges("Foo", null).isEmpty());
154
155         verifyControls();
156     }
157
158     public void testGetStoreChangesNoMatch()
159     {
160         WebSession session = newSession("myapp,Home,foo,bar", null);
161         WebRequest request = newRequest(false, session);
162
163         replayControls();
164
165         SessionPropertyPersistenceStrategy s = new SessionPropertyPersistenceStrategy();
166         s.setRequest(request);
167         s.setApplicationId("myapp");
168
169         Collection JavaDoc actual = s.getStoredChanges("Help", null);
170
171         assertTrue(actual.isEmpty());
172
173         verifyControls();
174     }
175
176     public void testGetStoredPageProperty()
177     {
178         Object JavaDoc value = new Object JavaDoc();
179         WebSession session = newSession("myapp,Help,bar", value);
180         WebRequest request = newRequest(false, session);
181
182         replayControls();
183
184         SessionPropertyPersistenceStrategy s = new SessionPropertyPersistenceStrategy();
185         s.setRequest(request);
186         s.setApplicationId("myapp");
187
188         Collection JavaDoc actual = s.getStoredChanges("Help", null);
189
190         assertEquals(1, actual.size());
191
192         PropertyChange pc = (PropertyChange) actual.iterator().next();
193
194         assertNull(pc.getComponentPath());
195         assertEquals("bar", pc.getPropertyName());
196         assertSame(value, pc.getNewValue());
197
198         verifyControls();
199     }
200
201     public void testGetStoredComponentProperty()
202     {
203         Object JavaDoc value = new Object JavaDoc();
204         WebSession session = newSession("myapp,Help,zap.biff,bar", value);
205         WebRequest request = newRequest(false, session);
206
207         replayControls();
208
209         SessionPropertyPersistenceStrategy s = new SessionPropertyPersistenceStrategy();
210         s.setRequest(request);
211         s.setApplicationId("myapp");
212
213         Collection JavaDoc actual = s.getStoredChanges("Help", null);
214
215         assertEquals(1, actual.size());
216
217         PropertyChange pc = (PropertyChange) actual.iterator().next();
218
219         assertEquals("zap.biff", pc.getComponentPath());
220         assertEquals("bar", pc.getPropertyName());
221         assertSame(value, pc.getNewValue());
222
223         verifyControls();
224     }
225
226     public void testDiscardChangesNoSession()
227     {
228         WebRequest request = newRequest(false, null);
229
230         replayControls();
231
232         SessionPropertyPersistenceStrategy s = new SessionPropertyPersistenceStrategy();
233         s.setRequest(request);
234
235         s.discardStoredChanges("Foo", null);
236
237         verifyControls();
238     }
239
240     public void testDiscardChangesNoMatch()
241     {
242         WebSession session = newSession("myapp,Home,foo", false);
243         WebRequest request = newRequest(false, session);
244
245         replayControls();
246
247         SessionPropertyPersistenceStrategy s = new SessionPropertyPersistenceStrategy();
248         s.setRequest(request);
249
250         s.discardStoredChanges("Foo", null);
251         verifyControls();
252     }
253
254     public void testDiscardChangesWithMatch()
255     {
256         WebSession session = newSession("myapp,Home,foo", true);
257         WebRequest request = newRequest(false, session);
258
259         replayControls();
260
261         SessionPropertyPersistenceStrategy s = new SessionPropertyPersistenceStrategy();
262         s.setRequest(request);
263         s.setApplicationId("myapp");
264
265         s.discardStoredChanges("Home", null);
266
267         verifyControls();
268     }
269 }
Popular Tags