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;
26 import org.apache.wicket.IPageMap;
27 import org.apache.wicket.PageParameters;
28 import org.apache.wicket.model.IModel;
29 import org.apache.wicket.protocol.http.WebResponse;
30 import org.apache.wicket.util.tester.WicketTester;
31 import org.junit.After;
32 import org.junit.Before;
33 import org.junit.Test;
35 public class WebApplicationBasePageTest {
36 private WicketTester wicket;
40 wicket = new WicketTester();
44 public void tearDown() {
48 private void checkBehaviorsInitialized(WebApplicationBasePage aPage) throws Exception {
49 Field behaviorsField = WebApplicationBasePage.class.getDeclaredField("behaviors");
50 behaviorsField.setAccessible(true);
51 CompositePageBehavior behaviors = (CompositePageBehavior)behaviorsField.get(aPage);
52 assertNotNull(behaviors);
56 public void testRenderBasePage() throws Exception {
57 WebApplicationBasePage page = new WebApplicationBasePage();
58 wicket.startPage(page);
59 wicket.assertRenderedPage(WebApplicationBasePage.class);
60 checkBehaviorsInitialized(page);
64 public void testRenderBasePageWithModel() throws Exception {
65 WebApplicationBasePage page = new WebApplicationBasePage(mock(IModel.class));
66 wicket.startPage(page);
67 wicket.assertRenderedPage(WebApplicationBasePage.class);
68 checkBehaviorsInitialized(page);
72 public void testRenderBasePageWithPageMap() throws Exception {
73 WebApplicationBasePage page = new WebApplicationBasePage(mock(IPageMap.class));
74 wicket.startPage(page);
75 wicket.assertRenderedPage(WebApplicationBasePage.class);
76 checkBehaviorsInitialized(page);
80 public void testRenderBasePageWithPageMapAndModel() throws Exception {
81 WebApplicationBasePage page = new WebApplicationBasePage(mock(IPageMap.class), mock(IModel.class));
82 wicket.startPage(page);
83 wicket.assertRenderedPage(WebApplicationBasePage.class);
84 checkBehaviorsInitialized(page);
88 public void testRenderBasePageWithPageParameters() throws Exception {
89 WebApplicationBasePage page = new WebApplicationBasePage(new PageParameters());
90 wicket.startPage(page);
91 wicket.assertRenderedPage(WebApplicationBasePage.class);
92 checkBehaviorsInitialized(page);
96 public void testRenderBasePageWithPageMapAndPageParameters() throws Exception {
97 WebApplicationBasePage page = new WebApplicationBasePage(mock(IPageMap.class), new PageParameters());
98 wicket.startPage(page);
99 wicket.assertRenderedPage(WebApplicationBasePage.class);
100 checkBehaviorsInitialized(page);
103 public static final class TestPage extends WebApplicationBasePage {
105 private WebResponse response;
107 public TestPage(WebResponse aResponse) {
108 response = aResponse;
110 public void callAfterRender() {
113 public void callSetHeaders() {
114 setHeaders(response);
116 public void callBeforeRender() {
122 public void testAddBehavior() throws Exception {
123 final WebResponse response = mock(WebResponse.class);
124 TestPage page = new TestPage(response);
125 PageBehavior behavior = mock(PageBehavior.class);
126 page.addBehavior(behavior);
129 page.callBeforeRender();
130 verify(behavior).onBeforeRender(same(page));
131 verifyNoMoreInteractions(behavior);
134 page.callAfterRender();
135 verify(behavior).onAfterRender(same(page));
136 verifyNoMoreInteractions(behavior);
139 page.callSetHeaders();
140 verify(behavior).setHeaders(same(page), same(response));
141 verifyNoMoreInteractions(behavior);
145 public void testSmokeBehaviorViewOnlyOnce() throws Exception {
146 WebApplicationBasePage page = new WebApplicationBasePage(mock(IPageMap.class), new PageParameters());
147 page.addBehavior(new ExpirePageImmediatelyBehavior());
148 wicket.startPage(page);
149 wicket.assertRenderedPage(WebApplicationBasePage.class);
153 public void testSmokeBehaviorDisableCaching() throws Exception {
154 WebApplicationBasePage page = new WebApplicationBasePage(mock(IPageMap.class), new PageParameters());
155 page.addBehavior(new DisableCachingBehavior());
156 wicket.startPage(page);
157 wicket.assertRenderedPage(WebApplicationBasePage.class);
161 public void testSmokeBehaviorFlushEntityManager() throws Exception {
162 WebApplicationBasePage page = new WebApplicationBasePage(mock(IPageMap.class), new PageParameters());
163 EntityManager entityManager = mock(EntityManager.class);
164 PageBehavior behavior = new FlushEntityManagerBehavior(entityManager);
165 page.addBehavior(behavior);
166 wicket.startPage(page);
167 wicket.assertRenderedPage(WebApplicationBasePage.class);
168 verify(entityManager).flush();