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>
+