Repository: wicket
Updated Branches:
  refs/heads/master c54448859 -> cea08bfbd


WICKET-6545 isRendering() includes preparation

phase now; extended tests for TransparentWebMarkupContainer


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

Branch: refs/heads/master
Commit: cea08bfbd72b3b1fb4d9668b7c2a8012d3f06dac
Parents: c544488
Author: Sven Meier <svenme...@apache.org>
Authored: Wed Mar 28 15:52:40 2018 +0200
Committer: Sven Meier <svenme...@apache.org>
Committed: Wed Mar 28 15:52:40 2018 +0200

----------------------------------------------------------------------
 .../main/java/org/apache/wicket/Component.java  |  4 +-
 .../html/TransparentWebMarkupContainerTest.java | 70 ++++++++++++++++----
 2 files changed, 59 insertions(+), 15 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/cea08bfb/wicket-core/src/main/java/org/apache/wicket/Component.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/Component.java 
b/wicket-core/src/main/java/org/apache/wicket/Component.java
index c1ae823..c033194 100644
--- a/wicket-core/src/main/java/org/apache/wicket/Component.java
+++ b/wicket-core/src/main/java/org/apache/wicket/Component.java
@@ -4368,13 +4368,13 @@ public abstract class Component
        }
        
        /**
-        * Says if the component is rendering or not checking the corresponding 
flag.
+        * Says if the component is rendering currently.
         * 
         * @return true if this component is rendering, false otherwise.
         */
        public final boolean isRendering()
        {
-               return getRequestFlag(RFLAG_RENDERING);
+               return getRequestFlag(RFLAG_PREPARED_FOR_RENDER) || 
getRequestFlag(RFLAG_RENDERING);
        }
 
        /**

http://git-wip-us.apache.org/repos/asf/wicket/blob/cea08bfb/wicket-core/src/test/java/org/apache/wicket/markup/html/TransparentWebMarkupContainerTest.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/test/java/org/apache/wicket/markup/html/TransparentWebMarkupContainerTest.java
 
b/wicket-core/src/test/java/org/apache/wicket/markup/html/TransparentWebMarkupContainerTest.java
index 9233dcb..39586e0 100644
--- 
a/wicket-core/src/test/java/org/apache/wicket/markup/html/TransparentWebMarkupContainerTest.java
+++ 
b/wicket-core/src/test/java/org/apache/wicket/markup/html/TransparentWebMarkupContainerTest.java
@@ -29,6 +29,7 @@ import org.apache.wicket.markup.IMarkupResourceStreamProvider;
 import org.apache.wicket.markup.MarkupException;
 import org.apache.wicket.markup.html.basic.Label;
 import org.apache.wicket.markup.html.border.Border;
+import org.apache.wicket.markup.html.internal.HtmlHeaderContainer;
 import org.apache.wicket.markup.html.panel.Fragment;
 import org.apache.wicket.mock.MockPageManager;
 import org.apache.wicket.page.IManageablePage;
@@ -37,7 +38,6 @@ import org.apache.wicket.page.IPageManagerContext;
 import org.apache.wicket.request.mapper.parameter.PageParameters;
 import org.apache.wicket.util.resource.IResourceStream;
 import org.apache.wicket.util.resource.StringResourceStream;
-import org.apache.wicket.util.tester.TagTester;
 import org.apache.wicket.util.tester.WicketTestCase;
 import org.apache.wicket.util.tester.WicketTester;
 import org.junit.Test;
@@ -242,16 +242,25 @@ public class TransparentWebMarkupContainerTest extends 
WicketTestCase
         * Headers not rendered for components inside 
TransparentWebMarkupContainer on ajax update
         */
        @Test
-       public void updateEmbeddedAjaxComponent() throws Exception
+       public void updateAjaxUpdateOfTransparentContainer() throws Exception
        {
-               tester.startPage(TestEmbeddedAjaxComponet.class);
-               tester.clickLink("ajaxLink", true);
+               TestEmbeddedAjaxComponet page = new TestEmbeddedAjaxComponet();
+               tester.startPage(page);
+               assertEquals(2, page.renderHeadCount);
                
-               TagTester scriptTag = TagTester.createTagByAttribute(
-                       tester.getLastResponseAsString(), 
"header-contribution");
+               tester.clickLink("container:updateTransparentContainer", true);
+               assertEquals(4, page.renderHeadCount);
+       }
+       
+       @Test
+       public void updateAjaxUpdateOfContainerWithTransparentContainer() 
throws Exception
+       {
+               TestEmbeddedAjaxComponet page = new TestEmbeddedAjaxComponet();
+               tester.startPage(page);
+               assertEquals(2, page.renderHeadCount);
                
-               //check if our response contains headers
-               assertNotNull(scriptTag);
+               tester.clickLink("container:updateContainer", true);
+               assertEquals(4, page.renderHeadCount);
        }
        
        @Test
@@ -377,15 +386,29 @@ public class TransparentWebMarkupContainerTest extends 
WicketTestCase
        public static class TestEmbeddedAjaxComponet extends WebPage implements 
IMarkupResourceStreamProvider
        {
                private static final long serialVersionUID = 1L;
+               
+               public int renderHeadCount = 0;
 
                /** */
                public TestEmbeddedAjaxComponet()
                {
-                       final Component container;
-                       add(container = new 
TransparentWebMarkupContainer("container")
-                                       .setOutputMarkupId(true));
-                       add(new AjaxLink<Void>("ajaxLink"){
+                       final WebMarkupContainer container = new 
WebMarkupContainer("container");
+                       container.setOutputMarkupId(true);
+                       add(container);
+                       
+                       final Component transparentContainer = new 
TransparentWebMarkupContainer("transparentContainer").setOutputMarkupId(true);
+                       container.add(transparentContainer);
+                       
+                       container.add(new AjaxLink<Void>("updateContainer"){
+
+                               @Override
+                               public void 
internalRenderHead(HtmlHeaderContainer container)
+                               {
+                                       super.internalRenderHead(container);
 
+                                       renderHeadCount++;
+                               }
+                               
                                @Override
                                public void onClick(AjaxRequestTarget target)
                                {
@@ -393,6 +416,24 @@ public class TransparentWebMarkupContainerTest extends 
WicketTestCase
                                }
                                
                        });
+                       
+                       container.add(new 
AjaxLink<Void>("updateTransparentContainer"){
+
+                               @Override
+                               public void 
internalRenderHead(HtmlHeaderContainer container)
+                               {
+                                       super.internalRenderHead(container);
+
+                                       renderHeadCount++;
+                               }
+                               
+                               @Override
+                               public void onClick(AjaxRequestTarget target)
+                               {
+                                       target.add(transparentContainer);
+                               }
+                               
+                       });
                }
 
                @Override
@@ -402,7 +443,10 @@ public class TransparentWebMarkupContainerTest extends 
WicketTestCase
                        return new StringResourceStream("" + //
                                "<html><body>" + //
                                "       <div wicket:id=\"container\">" + //
-                               "               <a wicket:id=\"ajaxLink\"></a>" 
+ //
+                               "               <div 
wicket:id=\"transparentContainer\">" + //
+                               "                       <a 
wicket:id=\"updateContainer\"></a>" + //
+                               "                       <a 
wicket:id=\"updateTransparentContainer\"></a>" + //
+                               "               </div>" + //
                                "       </div>" + //
                                "</body></html>");
                }

Reply via email to