001: /*
002: * Licensed to the Apache Software Foundation (ASF) under one or more
003: * contributor license agreements. See the NOTICE file distributed with
004: * this work for additional information regarding copyright ownership.
005: * The ASF licenses this file to You under the Apache License, Version 2.0
006: * (the "License"); you may not use this file except in compliance with
007: * the License. You may obtain a copy of the License at
008: *
009: * http://www.apache.org/licenses/LICENSE-2.0
010: *
011: * Unless required by applicable law or agreed to in writing, software
012: * distributed under the License is distributed on an "AS IS" BASIS,
013: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014: * See the License for the specific language governing permissions and
015: * limitations under the License.
016: */
017: package org.apache.wicket.protocol.http;
018:
019: import java.util.Iterator;
020:
021: import junit.framework.Assert;
022: import junit.framework.TestCase;
023:
024: import org.apache.wicket.Session;
025: import org.apache.wicket.feedback.FeedbackMessage;
026: import org.apache.wicket.feedback.FeedbackMessages;
027: import org.apache.wicket.feedback.IFeedbackMessageFilter;
028: import org.apache.wicket.markup.html.link.Link;
029: import org.apache.wicket.util.diff.DiffUtil;
030: import org.apache.wicket.util.tester.WicketTester;
031:
032: /**
033: * Simple application that demonstrates the mock http application code (and
034: * checks that it is working)
035: *
036: * @author Chris Turner
037: */
038: public class MockWebApplicationTest extends TestCase {
039: private WicketTester application;
040:
041: /**
042: * Filter that returns all rendered messages.
043: */
044: private static final IFeedbackMessageFilter RENDERED_MESSAGES = new IFeedbackMessageFilter() {
045: private static final long serialVersionUID = 1L;
046:
047: public boolean accept(FeedbackMessage message) {
048: return message.isRendered();
049: }
050: };
051:
052: /**
053: * Create the test.
054: *
055: * @param name
056: * The test name
057: */
058: public MockWebApplicationTest(String name) {
059: super (name);
060: }
061:
062: protected void setUp() throws Exception {
063: super .setUp();
064: application = new WicketTester();
065: application.startPage(MockPage.class);
066: }
067:
068: protected void tearDown() throws Exception {
069: application.destroy();
070: }
071:
072: /**
073: * @throws Exception
074: */
075: public void testRenderHomePage() throws Exception {
076: // Validate the document
077: String document = application.getServletResponse()
078: .getDocument();
079: DiffUtil.validatePage(document, this .getClass(),
080: "MockPage_expectedResult.html", true);
081:
082: // Inspect the page & model
083: MockPage p = (MockPage) application.getLastRenderedPage();
084: Assert.assertEquals("Link should have been clicked 0 times", 0,
085: p.getLinkClickCount());
086: }
087:
088: /**
089: * Tests the clean up of flash messages put into the session when they are
090: * rendered.
091: */
092: public void testSessionFeedbackMessagesCleanUp() {
093: Session session = Session.get();
094: session.info("Message");
095: session.info("Not rendered");
096: FeedbackMessages feedbackMessages = session
097: .getFeedbackMessages();
098: Iterator iterator = feedbackMessages.iterator();
099: FeedbackMessage message = (FeedbackMessage) iterator.next();
100: message.markRendered();
101: feedbackMessages.clear(RENDERED_MESSAGES);
102: assertEquals(1, feedbackMessages.size());
103: message = (FeedbackMessage) iterator.next();
104: message.markRendered();
105: feedbackMessages.clear(RENDERED_MESSAGES);
106: assertEquals(0, feedbackMessages.size());
107: }
108:
109: /**
110: * @throws Exception
111: */
112: public void testClickLink() throws Exception {
113: // Need to call the home page first
114: testRenderHomePage();
115:
116: // Now request that we click the link
117: application.setupRequestAndResponse();
118: MockPage p = (MockPage) application.getLastRenderedPage();
119: Link link = (Link) p.get("actionLink");
120: application.getServletRequest().setRequestToComponent(link);
121: application.processRequestCycle();
122:
123: // Check that redirect was set as expected and invoke it
124: /*
125: * Assert.assertTrue("Response should be a redirect",
126: * application.getServletResponse().isRedirect()); String redirect =
127: * application.getServletResponse().getRedirectLocation();
128: * application.setupRequestAndResponse();
129: * application.getServletRequest().setRequestToRedirectString(redirect);
130: * application.processRequestCycle();
131: */
132: // Validate the document
133: String document = application.getServletResponse()
134: .getDocument();
135: DiffUtil.validatePage(document, this .getClass(),
136: "MockPage_expectedResult2.html", true);
137:
138: // Inspect the page & model
139: p = (MockPage) application.getLastRenderedPage();
140: Assert.assertEquals("Link should have been clicked 1 time", 1,
141: p.getLinkClickCount());
142: }
143: }
|