Author: ard
Date: Wed Sep 12 15:31:03 2012
New Revision: 1383999
URL: http://svn.apache.org/viewvc?rev=1383999&view=rev
Log:
RAVE-697 Added unit tests for deep merging of child nodes
Added:
rave/sandbox/content-services/rave-web-hmvc/src/test/resources/config/testenhancingmappings/extensionMergingPageDefinitions.xml
- copied, changed from r1383906,
rave/sandbox/content-services/rave-web-hmvc/src/test/resources/config/testenhancingmappings/mergingPageExtensionPageDefinitions.xml
rave/sandbox/content-services/rave-web-hmvc/src/test/resources/config/testenhancingmappings/extensionNonExistingPageDefinitions.xml
- copied unchanged from r1383906,
rave/sandbox/content-services/rave-web-hmvc/src/test/resources/config/testenhancingmappings/nonExistingExtensionPageDefinitions.xml
rave/sandbox/content-services/rave-web-hmvc/src/test/resources/config/testenhancingmappings/extensionSimplePageDefinitions.xml
- copied unchanged from r1383906,
rave/sandbox/content-services/rave-web-hmvc/src/test/resources/config/testenhancingmappings/simplePageExtensionPageDefinitions.xml
Removed:
rave/sandbox/content-services/rave-web-hmvc/src/test/resources/config/testenhancingmappings/mergingPageExtensionPageDefinitions.xml
rave/sandbox/content-services/rave-web-hmvc/src/test/resources/config/testenhancingmappings/nonExistingExtensionPageDefinitions.xml
rave/sandbox/content-services/rave-web-hmvc/src/test/resources/config/testenhancingmappings/simplePageExtensionPageDefinitions.xml
Modified:
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/enhanced-pages-config-manager-test.xml
Modified:
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/EnhancedPagesConfigManagerTest.java?rev=1383999&r1=1383998&r2=1383999&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/EnhancedPagesConfigManagerTest.java
Wed Sep 12 15:31:03 2012
@@ -19,6 +19,8 @@
package org.apache.rave.portal.web.mvc.config;
+import java.util.Collection;
+import java.util.LinkedList;
import java.util.Map;
import org.junit.Test;
@@ -43,8 +45,8 @@ public class EnhancedPagesConfigManagerT
private ApplicationContext applicationContext;
@Test
- public void noExtensionsPageRoutesManager() throws Exception {
- EnhancedPagesConfigManager enhancedPagesConfigManager =
(EnhancedPagesConfigManager)applicationContext.getBean("noExtensionsEnhancedPagesConfigManager");
+ public void noExtensionPages() throws Exception {
+ EnhancedPagesConfigManager enhancedPagesConfigManager =
(EnhancedPagesConfigManager)applicationContext.getBean("noExtensionPages");
final Map<String,PageFragment> pages =
enhancedPagesConfigManager.getConfig().getPages();
assertEquals(1, pages.size());
@@ -58,9 +60,9 @@ public class EnhancedPagesConfigManagerT
}
@Test
- public void snsEnhancedPageRoutesManager() throws Exception {
+ public void snsPages() throws Exception {
- EnhancedPagesConfigManager snsRemovedEnhancedPagesConfigManager =
(EnhancedPagesConfigManager)applicationContext.getBean("snsRemovingEnhancedPagesConfigManager");
+ 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!)
@@ -79,9 +81,9 @@ public class EnhancedPagesConfigManagerT
@Test
- public void abstractRemovingEnhancedPageRoutesManager() throws Exception {
+ public void abstractPages() throws Exception {
- EnhancedPagesConfigManager abstractRemovingEnhancedPagesConfigManager
=
(EnhancedPagesConfigManager)applicationContext.getBean("abstractPagesConfigManager");
+ EnhancedPagesConfigManager abstractRemovingEnhancedPagesConfigManager
= (EnhancedPagesConfigManager)applicationContext.getBean("abstractPages");
final Map<String,PageFragment> pages =
abstractRemovingEnhancedPagesConfigManager.getConfig().getPages();
/* although four root page fragments are present in
abstractPageDefinitions.xml, only 2 of them should be
@@ -101,8 +103,8 @@ public class EnhancedPagesConfigManagerT
@Test
- public void simplePageExtensionPageRoutesManager() throws Exception {
- EnhancedPagesConfigManager enhancedPagesConfigManager =
(EnhancedPagesConfigManager)applicationContext.getBean("simplePageExtensionEnhancedPagesConfigManager");
+ public void extensionSimplePages() throws Exception {
+ EnhancedPagesConfigManager enhancedPagesConfigManager =
(EnhancedPagesConfigManager)applicationContext.getBean("extensionSimplePages");
final Map<String,PageFragment> pages =
enhancedPagesConfigManager.getConfig().getPages();
assertEquals(2, pages.size());
@@ -136,18 +138,186 @@ public class EnhancedPagesConfigManagerT
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());
+ }
+ {
+ 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());
+ }
+ // 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
+ */
- 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());
+ EnhancedPagesConfigManager enhancedPagesConfigManager =
(EnhancedPagesConfigManager)applicationContext.getBean("extensionMergingPages");
+ final Map<String,PageFragment> pages =
enhancedPagesConfigManager.getConfig().getPages();
+ assertEquals(3, pages.size());
+ // 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());
+ }
+ }
+
+ // 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());
+ }
+ }
+
+ // 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);
+ if (!allAreNull) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ private boolean allExtendsAreNull(final ExtendablePageFragment fragment) {
+ if (fragment.getExtends() != null) {
+ return false;
+ }
+ for (PageFragment child : fragment.getChildren()) {
+ boolean allExtendsAreNull =
allExtendsAreNull((ExtendablePageFragment)child);
+ if (!allExtendsAreNull) {
+ return false;
+ }
+ }
+ return true;
+ }
}
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=1383999&r1=1383998&r2=1383999&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 12 15:31:03 2012
@@ -30,7 +30,7 @@
</property>
</bean>
- <bean id="noExtensionsEnhancedPagesConfigManager"
class="org.apache.rave.portal.web.mvc.config.EnhancedPagesConfigManager">
+ <bean id="noExtensionPages"
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"/>
@@ -40,7 +40,7 @@
<property name="enhancers" ref="pageEnhancers"/>
</bean>
- <bean id="snsRemovingEnhancedPagesConfigManager"
class="org.apache.rave.portal.web.mvc.config.EnhancedPagesConfigManager">
+ <bean id="snsPages"
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"/>
@@ -50,7 +50,7 @@
<property name="enhancers" ref="pageEnhancers"/>
</bean>
- <bean id="abstractPagesConfigManager"
class="org.apache.rave.portal.web.mvc.config.EnhancedPagesConfigManager">
+ <bean id="abstractPages"
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"/>
@@ -61,15 +61,27 @@
</bean>
- <bean id="simplePageExtensionEnhancedPagesConfigManager"
class="org.apache.rave.portal.web.mvc.config.EnhancedPagesConfigManager">
+ <bean id="extensionSimplePages"
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/simplePageExtensionPageDefinitions.xml"/>
+ <property name="pageDefinitionsPath"
value="classpath:config/testenhancingmappings/extensionSimplePageDefinitions.xml"/>
</bean>
</constructor-arg>
<property name="enhancers" ref="pageEnhancers"/>
</bean>
+ <bean id="extensionMergingPages"
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/extensionMergingPageDefinitions.xml"/>
+ </bean>
+ </constructor-arg>
+ <property name="enhancers" ref="pageEnhancers"/>
+ </bean>
+
+
+
</beans>
Copied:
rave/sandbox/content-services/rave-web-hmvc/src/test/resources/config/testenhancingmappings/extensionMergingPageDefinitions.xml
(from r1383906,
rave/sandbox/content-services/rave-web-hmvc/src/test/resources/config/testenhancingmappings/mergingPageExtensionPageDefinitions.xml)
URL:
http://svn.apache.org/viewvc/rave/sandbox/content-services/rave-web-hmvc/src/test/resources/config/testenhancingmappings/extensionMergingPageDefinitions.xml?p2=rave/sandbox/content-services/rave-web-hmvc/src/test/resources/config/testenhancingmappings/extensionMergingPageDefinitions.xml&p1=rave/sandbox/content-services/rave-web-hmvc/src/test/resources/config/testenhancingmappings/mergingPageExtensionPageDefinitions.xml&r1=1383906&r2=1383999&rev=1383999&view=diff
==============================================================================
---
rave/sandbox/content-services/rave-web-hmvc/src/test/resources/config/testenhancingmappings/mergingPageExtensionPageDefinitions.xml
(original)
+++
rave/sandbox/content-services/rave-web-hmvc/src/test/resources/config/testenhancingmappings/extensionMergingPageDefinitions.xml
Wed Sep 12 15:31:03 2012
@@ -18,32 +18,32 @@
under the License.
-->
<pageDefinitions name="default">
- <pageFragment name="standard" description="Page that is being extended by
other pages"
+ <pageFragment name="standard" viewName="standard" description="standard"
abstract="true"
controller="org.apache.rave.unittest.NonExistingController">
<pageFragment name="sub1"/>
<pageFragment name="sub2" controller="">
<pageFragment name="sub2sub1"
controller="org.apache.rave.unittest.NonExistingController"/>
</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="sub3sub1"
controller="org.apache.rave.unittest.NonExistingController"/>
</pageFragment>
</pageFragment>
- <pageFragment name="home" extends="/standard" description="Page that is
being extended by other pages"
+ <pageFragment name="home" extends="/standard" description="home"
controller="org.apache.rave.unittest.NonExistingController">
</pageFragment>
- <pageFragment name="agenda" extends="/standard" >
+ <pageFragment name="agenda" extends="/standard" viewName="agenda">
<pageFragment name="sub4"/>
</pageFragment>
- <pageFragment name="news" extends="/standard" description="newsdescription">
+ <pageFragment name="news" extends="/standard" description="news">
<!-- override the controller from 'standard' -->
<pageFragment name="sub2"
controller="org.apache.rave.unittest.NonExistingNewsController">
<!-- a pageFragment that 'standard' does not have. It should also
inherit 'sub2sub1' -->
- <pageFragment name="news" />
+ <pageFragment name="sub2subnews" />
</pageFragment>
</pageFragment>