2 * Copyright 2005-2010 the original author or authors.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
16 package org.wamblee.wicket.behavior;
18 import static junit.framework.Assert.*;
19 import static org.mockito.Matchers.*;
20 import static org.mockito.Mockito.*;
22 import java.lang.reflect.Field;
24 import javax.persistence.EntityManager;
25 import javax.transaction.Status;
26 import javax.transaction.UserTransaction;
28 import org.apache.wicket.IPageMap;
29 import org.apache.wicket.PageParameters;
30 import org.apache.wicket.model.IModel;
31 import org.apache.wicket.protocol.http.WebResponse;
32 import org.apache.wicket.util.tester.WicketTester;
33 import org.junit.After;
34 import org.junit.Before;
35 import org.junit.Test;
37 public class WebApplicationBasePageTest {
38 private WicketTester wicket;
42 wicket = new WicketTester();
46 public void tearDown() {
50 private void checkBehaviorsInitialized(WebApplicationBasePage aPage) throws Exception {
51 Field behaviorsField = WebApplicationBasePage.class.getDeclaredField("behaviors");
52 behaviorsField.setAccessible(true);
53 CompositePageBehavior behaviors = (CompositePageBehavior)behaviorsField.get(aPage);
54 assertNotNull(behaviors);
58 public void testRenderBasePage() throws Exception {
59 WebApplicationBasePage page = new WebApplicationBasePage();
60 wicket.startPage(page);
61 wicket.assertRenderedPage(WebApplicationBasePage.class);
62 checkBehaviorsInitialized(page);
66 public void testRenderBasePageWithModel() throws Exception {
67 WebApplicationBasePage page = new WebApplicationBasePage(mock(IModel.class));
68 wicket.startPage(page);
69 wicket.assertRenderedPage(WebApplicationBasePage.class);
70 checkBehaviorsInitialized(page);
74 public void testRenderBasePageWithPageMap() throws Exception {
75 WebApplicationBasePage page = new WebApplicationBasePage(mock(IPageMap.class));
76 wicket.startPage(page);
77 wicket.assertRenderedPage(WebApplicationBasePage.class);
78 checkBehaviorsInitialized(page);
82 public void testRenderBasePageWithPageMapAndModel() throws Exception {
83 WebApplicationBasePage page = new WebApplicationBasePage(mock(IPageMap.class), mock(IModel.class));
84 wicket.startPage(page);
85 wicket.assertRenderedPage(WebApplicationBasePage.class);
86 checkBehaviorsInitialized(page);
90 public void testRenderBasePageWithPageParameters() throws Exception {
91 WebApplicationBasePage page = new WebApplicationBasePage(new PageParameters());
92 wicket.startPage(page);
93 wicket.assertRenderedPage(WebApplicationBasePage.class);
94 checkBehaviorsInitialized(page);
98 public void testRenderBasePageWithPageMapAndPageParameters() throws Exception {
99 WebApplicationBasePage page = new WebApplicationBasePage(mock(IPageMap.class), new PageParameters());
100 wicket.startPage(page);
101 wicket.assertRenderedPage(WebApplicationBasePage.class);
102 checkBehaviorsInitialized(page);
105 public static final class TestPage extends WebApplicationBasePage {
107 private WebResponse response;
109 public TestPage(WebResponse aResponse) {
110 response = aResponse;
112 public void callAfterRender() {
115 public void callSetHeaders() {
116 setHeaders(response);
118 public void callBeforeRender() {
124 public void testAddBehavior() throws Exception {
125 final WebResponse response = mock(WebResponse.class);
126 TestPage page = new TestPage(response);
127 PageBehavior behavior = mock(PageBehavior.class);
128 page.addBehavior(behavior);
131 page.callBeforeRender();
132 verify(behavior).onBeforeRender(same(page));
133 verifyNoMoreInteractions(behavior);
136 page.callAfterRender();
137 verify(behavior).onAfterRender(same(page));
138 verifyNoMoreInteractions(behavior);
141 page.callSetHeaders();
142 verify(behavior).setHeaders(same(page), same(response));
143 verifyNoMoreInteractions(behavior);
147 public void testSmokeBehaviorViewOnlyOnce() throws Exception {
148 WebApplicationBasePage page = new WebApplicationBasePage(mock(IPageMap.class), new PageParameters());
149 page.addBehavior(new ExpirePageImmediatelyBehavior());
150 wicket.startPage(page);
151 wicket.assertRenderedPage(WebApplicationBasePage.class);
155 public void testSmokeBehaviorDisableCaching() throws Exception {
156 WebApplicationBasePage page = new WebApplicationBasePage(mock(IPageMap.class), new PageParameters());
157 page.addBehavior(new DisableCachingBehavior());
158 wicket.startPage(page);
159 wicket.assertRenderedPage(WebApplicationBasePage.class);
163 public void testSmokeBehaviorFlushEntityManager() throws Exception {
164 WebApplicationBasePage page = new WebApplicationBasePage(mock(IPageMap.class), new PageParameters());
165 EntityManager entityManager = mock(EntityManager.class);
166 when(entityManager.isOpen()).thenReturn(true);
167 PageBehavior behavior = new FlushEntityManagerBehavior(entityManager);
168 page.addBehavior(behavior);
169 wicket.startPage(page);
170 wicket.assertRenderedPage(WebApplicationBasePage.class);
171 verify(entityManager).flush();