You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by mg...@apache.org on 2013/04/08 11:07:18 UTC

git commit: WICKET-5137 Improve TagTester support for Ajax responses

Updated Branches:
  refs/heads/master af34de7f6 -> e0d2b7c38


WICKET-5137 Improve TagTester support for Ajax responses


Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/e0d2b7c3
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/e0d2b7c3
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/e0d2b7c3

Branch: refs/heads/master
Commit: e0d2b7c38188f34d669a47c6f22d8965fa0c295a
Parents: af34de7
Author: Martin Tzvetanov Grigorov <mg...@apache.org>
Authored: Mon Apr 8 12:06:44 2013 +0300
Committer: Martin Tzvetanov Grigorov <mg...@apache.org>
Committed: Mon Apr 8 12:06:44 2013 +0300

----------------------------------------------------------------------
 .../org/apache/wicket/util/tester/TagTester.java   |   16 +++++++++++++-
 .../markup/html/image/AjaxUpdatedImageTest.java    |    4 +-
 .../apache/wicket/util/tester/TagTesterTest.java   |   17 ++++++++++++++-
 3 files changed, 33 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/e0d2b7c3/wicket-core/src/main/java/org/apache/wicket/util/tester/TagTester.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/util/tester/TagTester.java b/wicket-core/src/main/java/org/apache/wicket/util/tester/TagTester.java
index 7aba99b..9915981 100644
--- a/wicket-core/src/main/java/org/apache/wicket/util/tester/TagTester.java
+++ b/wicket-core/src/main/java/org/apache/wicket/util/tester/TagTester.java
@@ -19,6 +19,7 @@ package org.apache.wicket.util.tester;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
+import java.util.regex.Pattern;
 
 import org.apache.wicket.WicketRuntimeException;
 import org.apache.wicket.markup.parser.XmlPullParser;
@@ -50,6 +51,9 @@ import org.apache.wicket.util.value.IValueMap;
  */
 public class TagTester
 {
+	private static final Pattern AJAX_COMPONENT_CDATA_OPEN = Pattern.compile("<component.*?><!\\[CDATA\\[");
+	private static final Pattern AJAX_COMPONENT_CDATA_CLOSE = Pattern.compile("\\]\\]></component>");
+
 	private final XmlTag openTag;
 
 	private final XmlTag closeTag;
@@ -362,10 +366,15 @@ public class TagTester
 		{
 			try
 			{
+				// remove the CDATA and
+				// the id attribute of the component because it is often the same as the element's id
+				markup = AJAX_COMPONENT_CDATA_OPEN.matcher(markup).replaceAll("<component>");
+				markup = AJAX_COMPONENT_CDATA_CLOSE.matcher(markup).replaceAll("</component>");
+
 				XmlPullParser parser = new XmlPullParser();
 				parser.parse(markup);
 
-				XmlTag elm = null;
+				XmlTag elm;
 				XmlTag openTag = null;
 				XmlTag closeTag = null;
 				int level = 0;
@@ -486,6 +495,11 @@ public class TagTester
 		{
 			try
 			{
+				// remove the CDATA and
+				// the id attribute of the component because it is often the same as the element's id
+				markup = AJAX_COMPONENT_CDATA_OPEN.matcher(markup).replaceAll("<component>");
+				markup = AJAX_COMPONENT_CDATA_CLOSE.matcher(markup).replaceAll("</component>");
+
 				XmlPullParser parser = new XmlPullParser();
 				parser.parse(markup);
 

http://git-wip-us.apache.org/repos/asf/wicket/blob/e0d2b7c3/wicket-core/src/test/java/org/apache/wicket/markup/html/image/AjaxUpdatedImageTest.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/markup/html/image/AjaxUpdatedImageTest.java b/wicket-core/src/test/java/org/apache/wicket/markup/html/image/AjaxUpdatedImageTest.java
index c095778..f235ff6 100644
--- a/wicket-core/src/test/java/org/apache/wicket/markup/html/image/AjaxUpdatedImageTest.java
+++ b/wicket-core/src/test/java/org/apache/wicket/markup/html/image/AjaxUpdatedImageTest.java
@@ -44,9 +44,9 @@ public class AjaxUpdatedImageTest extends WicketTestCase
 		tester.clickLink("link", true);
 		page = (AjaxyImagesPage)tester.getLastRenderedPage();
 		tagTester = tester.getTagById(page.image.getMarkupId());
-		final String imageAjaxComponent = tagTester.getValue();
+		final String srcAttr1 = tagTester.getAttribute("src");
 		assertTrue(
 			"Image has not be rendered in Ajax request so it has no wicket:antiCache' parameter",
-			imageAjaxComponent.contains("antiCache"));
+				srcAttr1.contains("antiCache"));
 	}
 }

http://git-wip-us.apache.org/repos/asf/wicket/blob/e0d2b7c3/wicket-core/src/test/java/org/apache/wicket/util/tester/TagTesterTest.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/util/tester/TagTesterTest.java b/wicket-core/src/test/java/org/apache/wicket/util/tester/TagTesterTest.java
index 19f814c..5674436 100644
--- a/wicket-core/src/test/java/org/apache/wicket/util/tester/TagTesterTest.java
+++ b/wicket-core/src/test/java/org/apache/wicket/util/tester/TagTesterTest.java
@@ -25,8 +25,23 @@ import org.junit.Test;
 public class TagTesterTest extends Assert
 {
 	/** Mock markup 1 */
-	public static final String MARKUP_1 = "<p id=\"test\" class=\"class1\"><span class=\"class2\" id=\"test2\">mock</span></p>";
+	private static final String MARKUP_1 = "<p id=\"test\" class=\"class1\"><span class=\"class2\" id=\"test2\">mock</span></p>";
 
+	private static final String AJAX_MARKUP_1 = "<?xml version='1.0' encoding='UTF-8'?>" +
+			"<ajax-response><component id='comp1'><![CDATA[<div class='cls' id='compId'></div>]]></component></ajax-response>";
+
+	/**
+	 * https://issues.apache.org/jira/browse/WICKET-5137
+	 */
+	@Test
+	public void getTagInAjaxResponse()
+	{
+		TagTester tester = TagTester.createTagByAttribute(AJAX_MARKUP_1, "id", "compId");
+		assertNotNull(tester);
+
+		String cls = tester.getAttribute("class");
+		assertEquals("cls", cls);
+	}
 
 	/**
 	 * Test the static factory method