001 package com.mockrunner.base;
002
003 import junit.framework.TestCase;
004
005 import org.mockejb.jndi.MockContextFactory;
006
007 import com.mockrunner.ejb.EJBTestModule;
008 import com.mockrunner.jdbc.JDBCTestModule;
009 import com.mockrunner.jms.JMSTestModule;
010 import com.mockrunner.mock.ejb.EJBMockObjectFactory;
011 import com.mockrunner.mock.jdbc.JDBCMockObjectFactory;
012 import com.mockrunner.mock.jms.JMSMockObjectFactory;
013 import com.mockrunner.mock.web.ActionMockObjectFactory;
014 import com.mockrunner.mock.web.WebMockObjectFactory;
015 import com.mockrunner.servlet.ServletTestModule;
016 import com.mockrunner.struts.ActionTestModule;
017 import com.mockrunner.tag.TagTestModule;
018
019 /**
020 * Base class for all standard adapters. Not used for basic adapters.
021 */
022 public abstract class BaseTestCase extends TestCase
023 {
024 private WebMockObjectFactory webMockFactory;
025 private ActionMockObjectFactory actionMockFactory;
026 private JDBCMockObjectFactory jdbcMockFactory;
027 private EJBMockObjectFactory ejbMockFactory;
028 private JMSMockObjectFactory jmsMockFactory;
029
030 public BaseTestCase()
031 {
032
033 }
034
035 public BaseTestCase(String arg0)
036 {
037 super(arg0);
038 }
039
040 protected void tearDown() throws Exception
041 {
042 super.tearDown();
043 if(null != jdbcMockFactory)
044 {
045 jdbcMockFactory.restoreDrivers();
046 jdbcMockFactory = null;
047 }
048 MockContextFactory.revertSetAsInitial();
049 webMockFactory = null;
050 actionMockFactory = null;
051 ejbMockFactory = null;
052 jmsMockFactory = null;
053 }
054
055 /**
056 * Creates the mock object factories. If you
057 * overwrite this method, you must call
058 * <code>super.setUp()</code>.
059 */
060 protected void setUp() throws Exception
061 {
062 super.setUp();
063 }
064
065 /**
066 * Creates a {@link WebMockObjectFactory}.
067 * @return the created {@link WebMockObjectFactory}
068 */
069 protected WebMockObjectFactory createWebMockObjectFactory()
070 {
071 return new WebMockObjectFactory();
072 }
073
074 /**
075 * Same as <code>createWebMockObjectFactory(otherFactory, true)</code>
076 */
077 protected WebMockObjectFactory createWebMockObjectFactory(WebMockObjectFactory otherFactory)
078 {
079 return new WebMockObjectFactory(otherFactory);
080 }
081
082 /**
083 * Creates a {@link com.mockrunner.mock.web.WebMockObjectFactory} based on another one.
084 * The created {@link com.mockrunner.mock.web.WebMockObjectFactory} will have its own
085 * request and response objects. If you set <i>createNewSession</i>
086 * to <code>true</code> it will also have its own session object.
087 * The two factories will share one <code>ServletContext</code>.
088 * Especially important for multithreading tests.
089 * If you set <i>createNewSession</i> to false, the two factories
090 * will share one session. This setting simulates multiple requests
091 * from the same client.
092 * @param otherFactory the other factory
093 * @param createNewSession create a new session for the new factory
094 * @return the created {@link com.mockrunner.mock.web.WebMockObjectFactory}
095 */
096 protected WebMockObjectFactory createWebMockObjectFactory(WebMockObjectFactory otherFactory, boolean createNewSession)
097 {
098 return new WebMockObjectFactory(otherFactory, createNewSession);
099 }
100
101 /**
102 * Gets the current {@link WebMockObjectFactory}.
103 * @return the {@link WebMockObjectFactory}
104 */
105 protected WebMockObjectFactory getWebMockObjectFactory()
106 {
107 synchronized(ActionMockObjectFactory.class)
108 {
109 if(webMockFactory == null)
110 {
111 webMockFactory = getActionMockObjectFactory();
112 }
113 }
114 return webMockFactory;
115 }
116
117 /**
118 * Sets the current {@link WebMockObjectFactory}.
119 * @param mockFactory the {@link WebMockObjectFactory}
120 */
121 protected void setWebMockObjectFactory(WebMockObjectFactory mockFactory)
122 {
123 this.webMockFactory = mockFactory;
124 }
125
126 /**
127 * Creates a {@link ActionMockObjectFactory}.
128 * @return the created {@link ActionMockObjectFactory}
129 */
130 protected ActionMockObjectFactory createActionMockObjectFactory()
131 {
132 return new ActionMockObjectFactory();
133 }
134
135 /**
136 * Same as <code>createActionMockObjectFactory(otherFactory, true)</code>
137 */
138 protected ActionMockObjectFactory createActionMockObjectFactory(WebMockObjectFactory otherFactory)
139 {
140 return new ActionMockObjectFactory(otherFactory);
141 }
142
143 /**
144 * Creates a {@link com.mockrunner.mock.web.ActionMockObjectFactory} based on
145 * another {@link com.mockrunner.mock.web.WebMockObjectFactory}.
146 * @param otherFactory the other factory
147 * @param createNewSession create a new session for the new factory
148 * @return the created {@link com.mockrunner.mock.web.ActionMockObjectFactory}
149 * @see #createWebMockObjectFactory(WebMockObjectFactory, boolean)
150 */
151 protected ActionMockObjectFactory createActionMockObjectFactory(WebMockObjectFactory otherFactory, boolean createNewSession)
152 {
153 return new ActionMockObjectFactory(otherFactory, createNewSession);
154 }
155
156 /**
157 * Gets the current {@link ActionMockObjectFactory}.
158 * @return the {@link ActionMockObjectFactory}
159 */
160 protected ActionMockObjectFactory getActionMockObjectFactory()
161 {
162 synchronized(ActionMockObjectFactory.class)
163 {
164 if(actionMockFactory == null)
165 {
166 actionMockFactory = createActionMockObjectFactory();
167 }
168 }
169 return actionMockFactory;
170 }
171
172 /**
173 * Sets the current {@link ActionMockObjectFactory}.
174 * @param mockFactory the {@link ActionMockObjectFactory}
175 */
176 protected void setActionMockObjectFactory(ActionMockObjectFactory mockFactory)
177 {
178 this.actionMockFactory = mockFactory;
179 }
180
181 /**
182 * Creates a {@link JDBCMockObjectFactory}.
183 * @return the created {@link JDBCMockObjectFactory}
184 */
185 protected JDBCMockObjectFactory createJDBCMockObjectFactory()
186 {
187 return new JDBCMockObjectFactory();
188 }
189
190 /**
191 * Gets the current {@link JDBCMockObjectFactory}.
192 * @return the {@link JDBCMockObjectFactory}
193 */
194 protected JDBCMockObjectFactory getJDBCMockObjectFactory()
195 {
196 synchronized(JDBCMockObjectFactory.class)
197 {
198 if(jdbcMockFactory == null)
199 {
200 jdbcMockFactory = createJDBCMockObjectFactory();
201 }
202 }
203 return jdbcMockFactory;
204 }
205
206 /**
207 * Sets the current {@link JDBCMockObjectFactory}.
208 * @param mockFactory the {@link JDBCMockObjectFactory}
209 */
210 protected void setJDBCMockObjectFactory(JDBCMockObjectFactory mockFactory)
211 {
212 this.jdbcMockFactory = mockFactory;
213 }
214
215 /**
216 * Creates a {@link EJBMockObjectFactory}.
217 * @return the created {@link EJBMockObjectFactory}
218 */
219 protected EJBMockObjectFactory createEJBMockObjectFactory()
220 {
221 return new EJBMockObjectFactory();
222 }
223
224 /**
225 * Gets the current {@link EJBMockObjectFactory}.
226 * @return the {@link EJBMockObjectFactory}
227 */
228 protected EJBMockObjectFactory getEJBMockObjectFactory()
229 {
230 synchronized(EJBMockObjectFactory.class)
231 {
232 if(ejbMockFactory == null)
233 {
234 ejbMockFactory = createEJBMockObjectFactory();
235 }
236 }
237 return ejbMockFactory;
238 }
239
240 /**
241 * Sets the current {@link JDBCMockObjectFactory}.
242 * @param mockFactory the {@link JDBCMockObjectFactory}
243 */
244 protected void setEJBMockObjectFactory(EJBMockObjectFactory mockFactory)
245 {
246 this.ejbMockFactory = mockFactory;
247 }
248
249 /**
250 * Creates a {@link JMSMockObjectFactory}.
251 * @return the created {@link JMSMockObjectFactory}
252 */
253 protected JMSMockObjectFactory createJMSMockObjectFactory()
254 {
255 return new JMSMockObjectFactory();
256 }
257
258 /**
259 * Gets the current {@link JMSMockObjectFactory}.
260 * @return the {@link JMSMockObjectFactory}
261 */
262 protected JMSMockObjectFactory getJMSMockObjectFactory()
263 {
264 synchronized(JMSMockObjectFactory.class)
265 {
266 if(jmsMockFactory == null)
267 {
268 jmsMockFactory = createJMSMockObjectFactory();
269 }
270 }
271 return jmsMockFactory;
272 }
273
274 /**
275 * Sets the current {@link JMSMockObjectFactory}.
276 * @param mockFactory the {@link JMSMockObjectFactory}
277 */
278 protected void setJMSMockObjectFactory(JMSMockObjectFactory mockFactory)
279 {
280 this.jmsMockFactory = mockFactory;
281 }
282
283 /**
284 * Creates an {@link com.mockrunner.struts.ActionTestModule} with the specified
285 * {@link WebMockObjectFactory}.
286 * @param mockFactory the {@link ActionMockObjectFactory}
287 * @return the created {@link com.mockrunner.struts.ActionTestModule}
288 */
289 protected ActionTestModule createActionTestModule(ActionMockObjectFactory mockFactory)
290 {
291 return new ActionTestModule(mockFactory);
292 }
293
294 /**
295 * Creates an {@link com.mockrunner.struts.ActionTestModule} based on the current
296 * {@link WebMockObjectFactory}.
297 * Same as <code>createActionTestModule(getActionMockObjectFactory())</code>.
298 * @return the created {@link com.mockrunner.struts.ActionTestModule}
299 */
300 protected ActionTestModule createActionTestModule()
301 {
302 return new ActionTestModule(getActionMockObjectFactory());
303 }
304
305 /**
306 * Creates a {@link com.mockrunner.tag.TagTestModule} with the specified
307 * {@link WebMockObjectFactory}.
308 * @return the created {@link com.mockrunner.tag.TagTestModule}
309 */
310 protected TagTestModule createTagTestModule(WebMockObjectFactory mockFactory)
311 {
312 return new TagTestModule(mockFactory);
313 }
314
315 /**
316 * Creates a {@link com.mockrunner.tag.TagTestModule} based on the current
317 * {@link WebMockObjectFactory}.
318 * Same as <code>createTagTestModule(getWebMockObjectFactory())</code>.
319 * @return the created {@link com.mockrunner.tag.TagTestModule}
320 */
321 protected TagTestModule createTagTestModule()
322 {
323 return new TagTestModule(getWebMockObjectFactory());
324 }
325
326 /**
327 * Creates a {@link com.mockrunner.servlet.ServletTestModule} with the specified
328 * {@link WebMockObjectFactory}.
329 * @return the created {@link com.mockrunner.servlet.ServletTestModule}
330 */
331 protected ServletTestModule createServletTestModule(WebMockObjectFactory mockFactory)
332 {
333 return new ServletTestModule(mockFactory);
334 }
335
336 /**
337 * Creates a {@link com.mockrunner.servlet.ServletTestModule} based on the current
338 * {@link WebMockObjectFactory}.
339 * Same as <code>createServletTestModule(getWebMockObjectFactory())</code>.
340 * @return the created {@link com.mockrunner.servlet.ServletTestModule}
341 */
342 protected ServletTestModule createServletTestModule()
343 {
344 return new ServletTestModule(getWebMockObjectFactory());
345 }
346
347 /**
348 * Creates a {@link com.mockrunner.jdbc.JDBCTestModule} with the specified
349 * {@link JDBCMockObjectFactory}.
350 * @return the created {@link com.mockrunner.jdbc.JDBCTestModule}
351 */
352 protected JDBCTestModule createJDBCTestModule(JDBCMockObjectFactory mockFactory)
353 {
354 return new JDBCTestModule(mockFactory);
355 }
356
357 /**
358 * Creates a {@link com.mockrunner.jdbc.JDBCTestModule} based on the current
359 * {@link JDBCMockObjectFactory}.
360 * Same as <code>createJDBCTestModule(getJDBCMockObjectFactory())</code>.
361 * @return the created {@link com.mockrunner.jdbc.JDBCTestModule}
362 */
363 protected JDBCTestModule createJDBCTestModule()
364 {
365 return new JDBCTestModule(getJDBCMockObjectFactory());
366 }
367
368 /**
369 * Creates an {@link com.mockrunner.ejb.EJBTestModule} with the specified
370 * {@link EJBMockObjectFactory}.
371 * @return the created {@link com.mockrunner.ejb.EJBTestModule}
372 */
373 protected EJBTestModule createEJBTestModule(EJBMockObjectFactory mockFactory)
374 {
375 return new EJBTestModule(mockFactory);
376 }
377
378 /**
379 * Creates an {@link com.mockrunner.ejb.EJBTestModule} based on the current
380 * {@link EJBMockObjectFactory}.
381 * Same as <code>createEJBTestModule(getEJBMockObjectFactory())</code>.
382 * @return the created {@link com.mockrunner.ejb.EJBTestModule}
383 */
384 protected EJBTestModule createEJBTestModule()
385 {
386 return new EJBTestModule(getEJBMockObjectFactory());
387 }
388
389 /**
390 * Creates a {@link com.mockrunner.jms.JMSTestModule} with the specified
391 * {@link JMSMockObjectFactory}.
392 * @return the created {@link com.mockrunner.jms.JMSTestModule}
393 */
394 protected JMSTestModule createJMSTestModule(JMSMockObjectFactory mockFactory)
395 {
396 return new JMSTestModule(mockFactory);
397 }
398
399 /**
400 * Creates a {@link com.mockrunner.jms.JMSTestModule} based on the current
401 * {@link JMSMockObjectFactory}.
402 * Same as <code>createJMSTestModule(getJMSMockObjectFactory())</code>.
403 * @return the created {@link com.mockrunner.jms.JMSTestModule}
404 */
405 protected JMSTestModule createJMSTestModule()
406 {
407 return new JMSTestModule(getJMSMockObjectFactory());
408 }
409 }
410