1 15 package org.apache.tapestry.record; 16 17 import java.util.Collection ; 18 import java.util.Collections ; 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 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 attributeName, Object 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 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 value = new Object (); 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 value = new Object (); 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 actual = s.getStoredChanges("Help", null); 170 171 assertTrue(actual.isEmpty()); 172 173 verifyControls(); 174 } 175 176 public void testGetStoredPageProperty() 177 { 178 Object value = new Object (); 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 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 value = new Object (); 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 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 |