Repository: wicket Updated Branches: refs/heads/master 8fbe6c7d5 -> 02d586477
Added test case for WICKET-5960 Project: http://git-wip-us.apache.org/repos/asf/wicket/repo Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/02d58647 Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/02d58647 Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/02d58647 Branch: refs/heads/master Commit: 02d586477a0e9dabf82ab839bd53499c1b78d616 Parents: 8fbe6c7 Author: Martijn Dashorst <[email protected]> Authored: Fri Aug 14 10:16:30 2015 +0200 Committer: Martijn Dashorst <[email protected]> Committed: Fri Aug 14 10:16:30 2015 +0200 ---------------------------------------------------------------------- .../wicket/request/cycle/RerenderPageTest.java | 52 +++++++++++++++++++- 1 file changed, 51 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/wicket/blob/02d58647/wicket-core/src/test/java/org/apache/wicket/request/cycle/RerenderPageTest.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/test/java/org/apache/wicket/request/cycle/RerenderPageTest.java b/wicket-core/src/test/java/org/apache/wicket/request/cycle/RerenderPageTest.java index 6546c6e..21af8c4 100644 --- a/wicket-core/src/test/java/org/apache/wicket/request/cycle/RerenderPageTest.java +++ b/wicket-core/src/test/java/org/apache/wicket/request/cycle/RerenderPageTest.java @@ -16,11 +16,13 @@ */ package org.apache.wicket.request.cycle; +import static org.hamcrest.CoreMatchers.containsString; + import org.apache.wicket.core.request.mapper.MountedMapper; +import org.apache.wicket.protocol.http.mock.MockHttpServletResponse; import org.apache.wicket.request.cycle.RerenderPage.Supplier; import org.apache.wicket.request.mapper.parameter.PageParameters; import org.apache.wicket.util.tester.WicketTestCase; -import org.junit.Ignore; import org.junit.Test; /** @@ -69,4 +71,52 @@ public class RerenderPageTest extends WicketTestCase // due to the mentioned issue, no headers are rendered at all. tester.assertContains("<!-- I should be present 2 -->"); } + + /** + * Another test case for WICKET-5960. + * + * When an AJAX update was performed, the next normal request would still find the page left + * with the PartialHtmlHeaderContainer causing an empty {@code + * <head>} section to be rendered. This test case walks Wicket through this scenario. + */ + @Test + public void nonAjaxRequestAfterAjaxUpdatedComponentShouldHaveHtmlHeadSection() + { + // perform a normal render of the page + tester.startPage(RerenderAjaxPage.class); + tester.assertRenderedPage(RerenderAjaxPage.class); + + MockHttpServletResponse firstResponseBeforeAjaxUpdate = tester.getLastResponse(); + + // call an ajax event that updates a component + tester.executeAjaxEvent("form:username", "blur"); + tester.assertComponentOnAjaxResponse("feedback"); + + // perform a normal render of the page (in this case submitting the form which triggers a + // feedback error + tester.submitForm("form"); + + // record the response for later reference + MockHttpServletResponse normalResponseAfterAjaxUpdate = tester.getLastResponse(); + + // submit the form again to ascertain if the HTML head section was restored upon the second + // render + tester.submitForm("form"); + + // record the response for later reference + MockHttpServletResponse secondNormalResponse = tester.getLastResponse(); + + // assert that the first response indeed got the correct <head> section + assertThat(firstResponseBeforeAjaxUpdate.getDocument(), + containsString(RerenderAjaxPage.HEAD_TEXT)); + + // assert that the second normal response after the AJAX update indeed got the correct + // <head> section (this worked while the bug was still present) + assertThat(secondNormalResponse.getDocument(), containsString(RerenderAjaxPage.HEAD_TEXT)); + + // assert that the first normal response after the AJAX update indeed got the correct + // <head> section (this failed while the bug was still present) + assertThat(normalResponseAfterAjaxUpdate.getDocument(), + containsString(RerenderAjaxPage.HEAD_TEXT)); + } }
