Author: ard
Date: Wed Sep 26 14:11:26 2012
New Revision: 1390506

URL: http://svn.apache.org/viewvc?rev=1390506&view=rev
Log:
RAVE-697 added unit test to confirm multiple extensions, extensions for 
descendant, overlapping extensions, non existing extensions, etc.

Added:
    
rave/sandbox/content-services/rave-web-hmvc/src/test/java/org/apache/rave/portal/web/mvc/config/ComplexEnhancedPagesConfigManagerTest.java
      - copied, changed from r1390429, 
rave/sandbox/content-services/rave-web-hmvc/src/test/java/org/apache/rave/portal/web/mvc/config/EnhancedPagesConfigManagerTest.java
    
rave/sandbox/content-services/rave-web-hmvc/src/test/resources/config/testenhancingmappings/extensionComplexPageDefinitions.xml
      - copied, changed from r1390429, 
rave/sandbox/content-services/rave-web-hmvc/src/test/resources/config/testenhancingmappings/extensionNonExistingPageDefinitions.xml
Removed:
    
rave/sandbox/content-services/rave-web-hmvc/src/test/resources/config/testenhancingmappings/extensionNonExistingPageDefinitions.xml
Modified:
    
rave/sandbox/content-services/rave-web-hmvc/src/test/resources/config/enhanced-pages-config-manager-test.xml

Copied: 
rave/sandbox/content-services/rave-web-hmvc/src/test/java/org/apache/rave/portal/web/mvc/config/ComplexEnhancedPagesConfigManagerTest.java
 (from r1390429, 
rave/sandbox/content-services/rave-web-hmvc/src/test/java/org/apache/rave/portal/web/mvc/config/EnhancedPagesConfigManagerTest.java)
URL: 
http://svn.apache.org/viewvc/rave/sandbox/content-services/rave-web-hmvc/src/test/java/org/apache/rave/portal/web/mvc/config/ComplexEnhancedPagesConfigManagerTest.java?p2=rave/sandbox/content-services/rave-web-hmvc/src/test/java/org/apache/rave/portal/web/mvc/config/ComplexEnhancedPagesConfigManagerTest.java&p1=rave/sandbox/content-services/rave-web-hmvc/src/test/java/org/apache/rave/portal/web/mvc/config/EnhancedPagesConfigManagerTest.java&r1=1390429&r2=1390506&rev=1390506&view=diff
==============================================================================
--- 
rave/sandbox/content-services/rave-web-hmvc/src/test/java/org/apache/rave/portal/web/mvc/config/EnhancedPagesConfigManagerTest.java
 (original)
+++ 
rave/sandbox/content-services/rave-web-hmvc/src/test/java/org/apache/rave/portal/web/mvc/config/ComplexEnhancedPagesConfigManagerTest.java
 Wed Sep 26 14:11:26 2012
@@ -19,8 +19,6 @@
 
 package org.apache.rave.portal.web.mvc.config;
 
-import java.util.Collection;
-import java.util.LinkedList;
 import java.util.Map;
 
 import org.junit.Test;
@@ -39,266 +37,100 @@ import static org.junit.Assert.assertTru
 
 @RunWith(SpringJUnit4ClassRunner.class)
 
@ContextConfiguration({"classpath:config/enhanced-pages-config-manager-test.xml"})
-public class EnhancedPagesConfigManagerTest {
+public class ComplexEnhancedPagesConfigManagerTest {
 
     @Autowired
     private ApplicationContext applicationContext;
 
+    /**
+     * For extensionComplex pages, we have pageFragment complex1 that extends 
from standard, where standard in turn
+     * extends from base. Also, complex1 has a child fragment 'sub1' which 
extends from abstract1/sub1, but is also inherited
+     * through standard/sub1. complex1 also has a child 'subx' which extends a 
non existing fragment.
+     *
+     * Further more, 'base' has a sub3 which contains again a sub3sub1. sub3 
extends from abstractsub3 which also has sub3sub1
+     *
+     * The test below assures that all the inheritance works as it should. For 
the enhanced, after all merging has been done,
+     * model we expect to be left with:
+     *
+     *
+     *
+     *    <pageFragment name="complex1" description="complex1" 
controller="complex1">
+     *       // note sub1 get controller="A" through  
'extends="abstract1/sub1"' but then still inherits the description="B"
+     *       // from standard/sub1
+     *       <pageFragment name="sub1" controller="A" description="B">
+     *           <pageFragment name="sub1sub1" controller="S1S1"/>
+     *       </pageFragment>
+     *       <pageFragment name="subx" controller="X" />
+     *       <pageFragment name="sub2" controller="">
+     *          <pageFragment name="sub2sub1" controller="S2S1"/>
+     *       </pageFragment>
+     *       <pageFragment name="sub3"  viewName="pages/test" controller="S3">
+     *           <pageFragment name="sub3sub1" controller="S3S1"/>
+     *       </pageFragment>
+     *    </pageFragment>
+     *
+     * @throws Exception
+     */
     @Test
-    public void noExtensionPages() throws Exception {
-        EnhancedPagesConfigManager enhancedPagesConfigManager = 
(EnhancedPagesConfigManager)applicationContext.getBean("noExtensionPages");
+    public void complexEnhancements() throws Exception {
+        EnhancedPagesConfigManager enhancedPagesConfigManager = 
(EnhancedPagesConfigManager)applicationContext.getBean("extensionComplexPages");
         final Map<String,PageFragment> pages = 
enhancedPagesConfigManager.getConfig().getPages();
 
-        assertEquals(1, pages.size());
-
-        final PageFragment pageFragment= pages.get("top");
-        assertEquals("top", pageFragment.getName());
+        final PageFragment pageFragment= pages.get("complex1");
+        assertEquals("complex1", pageFragment.getName());
         assertNull(((ExtendablePageFragment) pageFragment).getExtends());
         assertNull(pageFragment.getViewName());
-        assertEquals("org.apache.rave.unittest.NonExistingController", 
pageFragment.getController());
-        assertEquals(3, pageFragment.getChildren().size());
-    }
-
-    @Test
-    public void snsPages() throws Exception {
-
-        EnhancedPagesConfigManager snsRemovedEnhancedPagesConfigManager = 
(EnhancedPagesConfigManager)applicationContext.getBean("snsPages");
-
-        final Map<String,PageFragment> pages = 
snsRemovedEnhancedPagesConfigManager.getConfig().getPages();
-        // although two root pageFragments with name 'top' we only expect one 
of them (the second!)
-        assertEquals(1, pages.size());
-
-        final PageFragment pageDefinition = pages.get("top");
-        assertEquals("top", pageDefinition.getName());
+        assertEquals("complex1", pageFragment.getDescription());
+        assertEquals("complex1", pageFragment.getController());
 
+        assertEquals(4, pageFragment.getChildren().size());
 
-        // the second TOP pageFragment contains TWO fragments with name 'sub' 
: Since the snsRemovingEnhancedPagesConfigManager
-        // does contain the needed SNS remover enhancer, we now expect NO SNS 
PageFragments
-        assertEquals(1, pageDefinition.getChildren().size());
-        assertEquals("sub", pageDefinition.getChildren().get(0).getName());
-
-    }
-
-
-    @Test
-    public void abstractPages() throws Exception {
-
-        EnhancedPagesConfigManager abstractRemovingEnhancedPagesConfigManager 
= (EnhancedPagesConfigManager)applicationContext.getBean("abstractPages");
+        assertEquals("sub1",pageFragment.getChildren().get(0).getName());
+        assertEquals("subx",pageFragment.getChildren().get(1).getName());
+        assertEquals("sub2",pageFragment.getChildren().get(2).getName());
+        assertEquals("sub3",pageFragment.getChildren().get(3).getName());
 
-        final Map<String,PageFragment> pages = 
abstractRemovingEnhancedPagesConfigManager.getConfig().getPages();
-        /* although four root page fragments are present in 
abstractPageDefinitions.xml, only 2 of them should be
-         * part of the enhanced config pages because:
-         * 1) standard page is abstract
-         * 2) agenda page contains a descendant fragment that is abstract
-         */
-
-        assertEquals(2, pages.size());
-        assertNull(pages.get("standard"));
-        assertNull(pages.get("agenda"));
-        assertNotNull(pages.get("home"));
-        assertNotNull(pages.get("news"));
-
-    }
-
-
-
-    @Test
-    public void extensionSimplePages() throws Exception {
-        EnhancedPagesConfigManager enhancedPagesConfigManager = 
(EnhancedPagesConfigManager)applicationContext.getBean("extensionSimplePages");
-
-        final Map<String,PageFragment> pages = 
enhancedPagesConfigManager.getConfig().getPages();
-        assertEquals(2, pages.size());
-
-        // home extends from standard and thus should inherit from standard 
and merge from standard
-        final PageFragment standard = pages.get("standard");
-        assertEquals(3, standard.getChildren().size());
-
-        assertEquals("sub1",standard.getChildren().get(0).getName());
-        assertEquals("sub2",standard.getChildren().get(1).getName());
-        assertEquals("sub3",standard.getChildren().get(2).getName());
-
-        final PageFragment home = pages.get("home");
-        
-        // home has own description 'home'
-        assertEquals("home", home.getDescription());
-        
-        // home has no 'controller' but should be inherited from 'standard'
-        assertEquals("org.apache.rave.unittest.NonExistingController", 
home.getController());
-        
-        // home has three children inherited from 'standard'
-        assertEquals(3, home.getChildren().size());
-
-        // The order should be maintained as  well as the children order of 
'standard'
-        assertEquals("sub1",home.getChildren().get(0).getName());
-        assertEquals("sub2",home.getChildren().get(1).getName());
-        assertEquals("sub3",home.getChildren().get(2).getName());
-        
-        // the inheritance is a DEEP COPY, not a shallow, hence, instances 
should be different
-
-        assertFalse(home.getChildren().get(0) == 
standard.getChildren().get(0));
-        assertFalse(home.getChildren().get(1) == 
standard.getChildren().get(1));
-        assertFalse(home.getChildren().get(2) == 
standard.getChildren().get(2));
         {
-            PageFragment sub2 = home.getChildren().get(1);
-            // sub2 has empty string controller
-            assertEquals("", sub2.getController());
-            assertEquals(1, sub2.getChildren().size());
-            assertEquals("sub2sub1", sub2.getChildren().get(0).getName());
-            PageFragment sub2sub1 = sub2.getChildren().get(0);
-            assertEquals("org.apache.rave.unittest.NonExistingController", 
sub2sub1.getController());
+            final PageFragment sub1 =  pageFragment.getChildren().get(0);
+            assertEquals("A", sub1.getController());
+            assertEquals("B", sub1.getDescription());
+            assertEquals(1, sub1.getChildren().size());
+            final PageFragment sub1sub1 =  sub1.getChildren().get(0);
+            assertEquals("S1S1", sub1sub1.getController());
         }
         {
-            PageFragment sub3 = home.getChildren().get(2);
-            // sub2 has empty string controller
-            assertEquals("org.apache.rave.unittest.NonExistingController", 
sub3.getController());
-            assertEquals(1, sub3.getChildren().size());
-            assertEquals("sub3sub1", sub3.getChildren().get(0).getName());
-            PageFragment sub3sub1 = sub3.getChildren().get(0);
-            assertEquals("org.apache.rave.unittest.NonExistingController", 
sub3sub1.getController());
+            final PageFragment subx =  pageFragment.getChildren().get(1);
+            assertEquals("X", subx.getController());
+            assertEquals(0, subx.getChildren().size());
+
         }
-        // the resolved model should have set all 'extends' to null
-        assertTrue(allExtendsAreNull(pages));
-    }
 
-    @Test
-    public void extensionMergingPages() {
-        /*
-         * For this unit test, we expect 'home', 'agenda' and 'news', which 
all extend from 'standard' to have the standard page fragment
-         * children to be correctly merged or added : 'standard' page itself 
is marked as ABSTRACT, so should not be part
-         * of the end result
-         */
+        {
+            final PageFragment sub2 =  pageFragment.getChildren().get(2);
+            assertEquals("", sub2.getController());
+            assertEquals(1, sub2.getChildren().size());
 
-        EnhancedPagesConfigManager enhancedPagesConfigManager = 
(EnhancedPagesConfigManager)applicationContext.getBean("extensionMergingPages");
-        final Map<String,PageFragment> pages = 
enhancedPagesConfigManager.getConfig().getPages();
-        assertEquals(3, pages.size());
+            final PageFragment sub2sub1 =  sub2.getChildren().get(0);
+            assertEquals("S2S1", sub2sub1.getController());
+        }
 
-        // standard was ABSTRACT and thus should be removed
-        assertNull(pages.get("standard"));
 
-        // EXPECTATIONS FOR HOME
         {
-            final PageFragment home = pages.get("home");
-            assertNotNull(home);
-            assertEquals(3, home.getChildren().size());
-            assertEquals("sub1",home.getChildren().get(0).getName());
-            assertEquals("sub2",home.getChildren().get(1).getName());
-            assertEquals("sub3",home.getChildren().get(2).getName());
-
-            {
-                PageFragment home_sub1 = home.getChildren().get(0);
-                assertEquals(0,home_sub1.getChildren().size());
-            }
-            {
-                PageFragment home_sub2 = home.getChildren().get(1);
-                // sub2 has empty string controller
-                assertEquals("", home_sub2.getController());
-                assertEquals(1, home_sub2.getChildren().size());
-                assertEquals("sub2sub1", 
home_sub2.getChildren().get(0).getName());
-                PageFragment sub2sub1 = home_sub2.getChildren().get(0);
-                assertEquals("org.apache.rave.unittest.NonExistingController", 
sub2sub1.getController());
-            }
-            {
-                PageFragment home_sub3 = home.getChildren().get(2);
-                // sub2 has empty string controller
-                assertEquals("org.apache.rave.unittest.NonExistingController", 
home_sub3.getController());
-                assertEquals(1, home_sub3.getChildren().size());
-                assertEquals("sub3sub1", 
home_sub3.getChildren().get(0).getName());
-                PageFragment sub3sub1 = home_sub3.getChildren().get(0);
-                assertEquals("org.apache.rave.unittest.NonExistingController", 
sub3sub1.getController());
-            }
-        }
+            final PageFragment sub3 =  pageFragment.getChildren().get(3);
+            assertEquals("S3", sub3.getController());
+            assertEquals("pages/test", sub3.getViewName());
+            assertEquals(1, sub3.getChildren().size());
 
-        // EXPECTATIONS FOR AGENDA
-        // Agenda has a child <pageFragment name="sub4"/> of its own. We 
expect this fragment to be the first
-        // child, before the inherited sub1, sub2 and sub3
-        {
-            final PageFragment agenda = pages.get("agenda");
-            assertNotNull(agenda);
-            assertEquals(4, agenda.getChildren().size());
-            assertEquals("sub4",agenda.getChildren().get(0).getName());
-            assertEquals("sub1",agenda.getChildren().get(1).getName());
-            assertEquals("sub2",agenda.getChildren().get(2).getName());
-            assertEquals("sub3",agenda.getChildren().get(3).getName());
-
-            {
-                PageFragment agenda_sub4 = agenda.getChildren().get(0);
-                assertEquals(0, agenda_sub4.getChildren().size());
-            }
-            {
-                PageFragment agenda_sub1 = agenda.getChildren().get(1);
-                assertEquals(0,agenda_sub1.getChildren().size());
-            }
-            {
-                PageFragment agenda_sub2 = agenda.getChildren().get(2);
-                // sub2 has empty string controller
-                assertEquals("", agenda_sub2.getController());
-                assertEquals(1, agenda_sub2.getChildren().size());
-                assertEquals("sub2sub1", 
agenda_sub2.getChildren().get(0).getName());
-                PageFragment sub2sub1 = agenda_sub2.getChildren().get(0);
-                assertEquals("org.apache.rave.unittest.NonExistingController", 
sub2sub1.getController());
-            }
-            {
-                PageFragment agenda_sub3 = agenda.getChildren().get(3);
-                // sub2 has empty string controller
-                assertEquals("org.apache.rave.unittest.NonExistingController", 
agenda_sub3.getController());
-                assertEquals(1, agenda_sub3.getChildren().size());
-                assertEquals("sub3sub1", 
agenda_sub3.getChildren().get(0).getName());
-                PageFragment sub3sub1 = agenda_sub3.getChildren().get(0);
-                assertEquals("org.apache.rave.unittest.NonExistingController", 
sub3sub1.getController());
-            }
+            final PageFragment sub3sub1 =  sub3.getChildren().get(0);
+            assertEquals("S3S1", sub3sub1.getController());
         }
+    }
 
-        // EXPECTATIONS FOR NEWS
-        // News has a child of its own that is also configured in STANDARD :
-        // <pageFragment name="sub2" 
controller="org.apache.rave.unittest.NonExistingNewsController">
-        //     <pageFragment name="news" />
-        // </pageFragment>
-        // Since sub2 is of NEWS itself, For NEWS we thus first expect sub2, 
then sub1 and sub3 from STANDARD.
-        // sub2 should have the controller equal to 
'org.apache.rave.unittest.NonExistingNewsController' and not
-        // 'org.apache.rave.unittest.NonExistingController' from standard
-        // sub2 from NEWS has a child 'sub2subnews', but also gets the 
'sub2sub1' child from STANDARD
-        {
-            final PageFragment news = pages.get("news");
-            assertNotNull(news);
-            assertEquals(3, news.getChildren().size());
-            // first own child sub2
-            assertEquals("sub2",news.getChildren().get(0).getName());
-            // then the inherited childs
-            assertEquals("sub1",news.getChildren().get(1).getName());
-            assertEquals("sub3",news.getChildren().get(2).getName());
-
-            {
-                PageFragment news_sub2 = news.getChildren().get(0);
-                assertEquals(2, news_sub2.getChildren().size());
-                
assertEquals("org.apache.rave.unittest.NonExistingNewsController", 
news_sub2.getController());
-                PageFragment sub2subnews = news_sub2.getChildren().get(0);
-                assertEquals("sub2subnews",sub2subnews.getName());
-                PageFragment sub2sub1 = news_sub2.getChildren().get(1);
-                assertEquals("sub2sub1",sub2sub1.getName());
-                
assertEquals("org.apache.rave.unittest.NonExistingController",sub2sub1.getController());
-            }
-            {
-                PageFragment news_sub1 = news.getChildren().get(1);
-                assertEquals(0,news_sub1.getChildren().size());
-            }
-            {
-                PageFragment news_sub3 = news.getChildren().get(2);
-                // sub2 has empty string controller
-                assertEquals("org.apache.rave.unittest.NonExistingController", 
news_sub3.getController());
-                assertEquals(1, news_sub3.getChildren().size());
-                assertEquals("sub3sub1", 
news_sub3.getChildren().get(0).getName());
-                PageFragment sub3sub1 = news_sub3.getChildren().get(0);
-                assertEquals("org.apache.rave.unittest.NonExistingController", 
sub3sub1.getController());
-            }
-        }
 
-        // the resolved model should have set all 'extends' to null
-        assertTrue(allExtendsAreNull(pages));
-    }
 
     private boolean allExtendsAreNull(final Map<String, PageFragment> pages) {
         for (PageFragment page : pages.values()) {
-            boolean allAreNull = 
allExtendsAreNull((ExtendablePageFragment)page);    
+            boolean allAreNull = 
allExtendsAreNull((ExtendablePageFragment)page);
             if (!allAreNull) {
                 return false;
             }

Modified: 
rave/sandbox/content-services/rave-web-hmvc/src/test/resources/config/enhanced-pages-config-manager-test.xml
URL: 
http://svn.apache.org/viewvc/rave/sandbox/content-services/rave-web-hmvc/src/test/resources/config/enhanced-pages-config-manager-test.xml?rev=1390506&r1=1390505&r2=1390506&view=diff
==============================================================================
--- 
rave/sandbox/content-services/rave-web-hmvc/src/test/resources/config/enhanced-pages-config-manager-test.xml
 (original)
+++ 
rave/sandbox/content-services/rave-web-hmvc/src/test/resources/config/enhanced-pages-config-manager-test.xml
 Wed Sep 26 14:11:26 2012
@@ -81,6 +81,16 @@
     <property name="enhancers" ref="pageEnhancers"/>
   </bean>
 
+  <bean id="extensionComplexPages" 
class="org.apache.rave.portal.web.mvc.config.EnhancedPagesConfigManager">
+    <constructor-arg>
+      <bean 
class="org.apache.rave.portal.web.mvc.config.xml.XmlPagesConfigManager">
+        <property name="routesPath" value="classpath:routes.xml"/>
+        <property name="pageDefinitionsPath" 
value="classpath:config/testenhancingmappings/extensionComplexPageDefinitions.xml"/>
+      </bean>
+    </constructor-arg>
+    <property name="enhancers" ref="pageEnhancers"/>
+  </bean>
+
 
 
 </beans>

Copied: 
rave/sandbox/content-services/rave-web-hmvc/src/test/resources/config/testenhancingmappings/extensionComplexPageDefinitions.xml
 (from r1390429, 
rave/sandbox/content-services/rave-web-hmvc/src/test/resources/config/testenhancingmappings/extensionNonExistingPageDefinitions.xml)
URL: 
http://svn.apache.org/viewvc/rave/sandbox/content-services/rave-web-hmvc/src/test/resources/config/testenhancingmappings/extensionComplexPageDefinitions.xml?p2=rave/sandbox/content-services/rave-web-hmvc/src/test/resources/config/testenhancingmappings/extensionComplexPageDefinitions.xml&p1=rave/sandbox/content-services/rave-web-hmvc/src/test/resources/config/testenhancingmappings/extensionNonExistingPageDefinitions.xml&r1=1390429&r2=1390506&rev=1390506&view=diff
==============================================================================
--- 
rave/sandbox/content-services/rave-web-hmvc/src/test/resources/config/testenhancingmappings/extensionNonExistingPageDefinitions.xml
 (original)
+++ 
rave/sandbox/content-services/rave-web-hmvc/src/test/resources/config/testenhancingmappings/extensionComplexPageDefinitions.xml
 Wed Sep 26 14:11:26 2012
@@ -18,20 +18,42 @@
   under the License.
   -->
 <pageDefinitions name="default">
-  <pageFragment name="standard" description="Page that is being extended by 
other pages"
-                  controller="org.apache.rave.unittest.NonExistingController">
-    <pageFragment name="sub1"/>
+
+  <pageFragment  name="abstractsub3"  abstract="true"  viewName="pages/test" 
controller="S3">
+    <!-- on purpose non existing extends -->
+    <pageFragment name="sub3sub1" extends="some/fragment" controller="S3S1"/>
+  </pageFragment>
+
+  <pageFragment name="base" abstract="true" description="base"
+                controller="base">
+    <pageFragment name="sub1" controller="base" description="base">
+       <pageFragment name="sub1sub1" controller="S1S1"/>
+    </pageFragment>
     <pageFragment name="sub2" controller="">
-      <pageFragment name="sub2sub1" 
controller="org.apache.rave.unittest.NonExistingController"/>
+      <pageFragment name="sub2sub1" controller="S2S1"/>
     </pageFragment>
-    <pageFragment name="sub3" viewName="pages/test" 
controller="org.apache.rave.unittest.NonExistingController">
-      <pageFragment name="sub3sub1" extends="some/fragment" 
controller="org.apache.rave.unittest.NonExistingController"/>
+    <pageFragment name="sub3" extends="abstractsub3">
+      <pageFragment name="sub3sub1" extends="abstractsub3/sub3sub1" />
     </pageFragment>
   </pageFragment>
 
-  <pageFragment name="home" extends="/XXX" description="Page that is being 
extended by other pages"
-                  controller="org.apache.rave.unittest.NonExistingController">
+  <pageFragment  name="standard" abstract="true" extends="base"
+                  controller="standard">
+    <pageFragment name="sub1" controller="B" description="B"/>
+  </pageFragment>
+
+  <pageFragment name="complex1" extends="standard" description="complex1"
+                  controller="complex1">
+    <pageFragment name="sub1" extends="abstract1/sub1"/>
+    <!-- on purpose non existing extends -->
+    <pageFragment name="subx" controller="X" extends="abstract1/xxx"/>
+  </pageFragment>
+
+  <pageFragment name="abstract1" abstract="true">
+    <pageFragment name="sub1" controller="A"/>
   </pageFragment>
 
 
-</pageDefinitions>
\ No newline at end of file
+
+</pageDefinitions>
+


Reply via email to