[jboss-svn-commits] JBoss Portal SVN: r5578 - in trunk/theme: . src/main/org/jboss/portal/test/theme/render
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Fri Nov 3 14:11:59 EST 2006
Author: roy.russo at jboss.com
Date: 2006-11-03 14:11:57 -0500 (Fri, 03 Nov 2006)
New Revision: 5578
Added:
trunk/theme/src/main/org/jboss/portal/test/theme/render/TestRenderedMarkup.java
Modified:
trunk/theme/build.xml
Log:
JBPORTAL-1099 - added markup render test
Modified: trunk/theme/build.xml
===================================================================
--- trunk/theme/build.xml 2006-11-03 16:37:50 UTC (rev 5577)
+++ trunk/theme/build.xml 2006-11-03 19:11:57 UTC (rev 5578)
@@ -272,6 +272,7 @@
<!-- render tests -->
<test todir="${test.reports}" name="org.jboss.portal.test.theme.render.TestRenderContext"/>
+ <test todir="${test.reports}" name="org.jboss.portal.test.theme.render.TestRenderedMarkup"/>
</x-test>
<x-classpath>
<path refid="oswego.concurrent.classpath"/>
Added: trunk/theme/src/main/org/jboss/portal/test/theme/render/TestRenderedMarkup.java
===================================================================
--- trunk/theme/src/main/org/jboss/portal/test/theme/render/TestRenderedMarkup.java 2006-11-03 16:37:50 UTC (rev 5577)
+++ trunk/theme/src/main/org/jboss/portal/test/theme/render/TestRenderedMarkup.java 2006-11-03 19:11:57 UTC (rev 5578)
@@ -0,0 +1,231 @@
+/*
+* JBoss, a division of Red Hat
+* Copyright 2006, Red Hat Middleware, LLC, and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.portal.test.theme.render;
+
+import junit.framework.TestCase;
+import org.jboss.portal.common.MediaType;
+import org.jboss.portal.common.util.CLLoader;
+import org.jboss.portal.common.util.LoaderResource;
+import org.jboss.portal.server.ServerRequest;
+import org.jboss.portal.server.util.HTTPStreamInfo;
+import org.jboss.portal.test.theme.TestHelper;
+import org.jboss.portal.theme.LayoutService;
+import org.jboss.portal.theme.PortalLayout;
+import org.jboss.portal.theme.PortalTheme;
+import org.jboss.portal.theme.RuntimeContext;
+import org.jboss.portal.theme.ThemeConstants;
+import org.jboss.portal.theme.ThemeService;
+import org.jboss.portal.theme.deployment.jboss.PortalLayoutMetaDataFactory;
+import org.jboss.portal.theme.deployment.jboss.PortalThemeMetaDataFactory;
+import org.jboss.portal.theme.deployment.jboss.RenderSetMetaDataFactory;
+import org.jboss.portal.theme.impl.LayoutServiceImpl;
+import org.jboss.portal.theme.impl.ThemeServiceImpl;
+import org.jboss.portal.theme.impl.render.div.DivDecorationRenderer;
+import org.jboss.portal.theme.impl.render.div.DivPortletRenderer;
+import org.jboss.portal.theme.impl.render.div.DivRegionRenderer;
+import org.jboss.portal.theme.impl.render.div.DivWindowRenderer;
+import org.jboss.portal.theme.impl.render.dynamic.DynaDecorationRenderer;
+import org.jboss.portal.theme.impl.render.dynamic.DynaPortletRenderer;
+import org.jboss.portal.theme.impl.render.dynamic.DynaRegionRenderer;
+import org.jboss.portal.theme.impl.render.dynamic.DynaWindowRenderer;
+import org.jboss.portal.theme.metadata.PortalLayoutMetaData;
+import org.jboss.portal.theme.metadata.PortalThemeMetaData;
+import org.jboss.portal.theme.metadata.RenderSetMetaData;
+import org.jboss.portal.theme.page.ModifiablePageResult;
+import org.jboss.portal.theme.page.ModifiableWindowResult;
+import org.jboss.portal.theme.page.WindowContext;
+import org.jboss.portal.theme.render.PortalRenderSet;
+import org.jboss.portal.theme.render.RenderContext;
+import org.jboss.xb.binding.Unmarshaller;
+import org.jboss.xb.binding.UnmarshallerFactory;
+
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author <a href="mailto:royrusso at yahoo.com">Roy Russo</a>
+ * @version $Revision: 0 $
+ */
+public class TestRenderedMarkup extends TestCase
+{
+ private LayoutService layoutService;
+ private ThemeService themeService;
+ private RuntimeContext runtimeContext;
+
+ private PortalRenderSet renderSet;
+ private PortalLayout layout;
+ private PortalTheme theme;
+
+
+ private ModifiableWindowResult markupResult;
+
+ private static final String TEST_PAGE_NAME = "TestPage";
+
+ /**
+ * How many windows to create on left region *
+ */
+ private static final int LEFT_WINDOWS = 3;
+
+ /**
+ * How many windows to create on center region *
+ */
+ private static final int CENTER_WINDOWS = 3;
+
+ protected void setUp() throws Exception
+ {
+ themeService = new ThemeServiceImpl();
+ layoutService = new LayoutServiceImpl();
+
+ runtimeContext = TestHelper.createRuntimeContext();
+ LoaderResource res = new CLLoader().getResource("xml/portal-layouts.xml");
+ Unmarshaller unmarshaller = UnmarshallerFactory.newInstance().newUnmarshaller();
+
+ List portalLayouts = (List)unmarshaller.unmarshal(res.asInputStream(), new PortalLayoutMetaDataFactory(), null);
+ for (Iterator i = portalLayouts.iterator(); i.hasNext();)
+ {
+ PortalLayoutMetaData layoutMD = (PortalLayoutMetaData)i.next();
+ layoutService.addLayout(runtimeContext, layoutMD);
+ }
+ layout = layoutService.getLayout("generic", true);
+
+ res = new CLLoader().getResource("xml/portal-renderSet.xml");
+ unmarshaller = UnmarshallerFactory.newInstance().newUnmarshaller();
+ List renderSets = (List)unmarshaller.unmarshal(res.asInputStream(), new RenderSetMetaDataFactory(), null);
+ for (Iterator i = renderSets.iterator(); i.hasNext();)
+ {
+ RenderSetMetaData renderSetMD = (RenderSetMetaData)i.next();
+ layoutService.addRenderSet(runtimeContext, renderSetMD);
+ }
+ renderSet = layoutService.getRenderSet("divRenderer", MediaType.HTML);
+
+ res = new CLLoader().getResource("xml/portal-themes.xml");
+ unmarshaller = UnmarshallerFactory.newInstance().newUnmarshaller();
+
+ List themes = (List)unmarshaller.unmarshal(res.asInputStream(), new PortalThemeMetaDataFactory(), null);
+ for (Iterator i = themes.iterator(); i.hasNext();)
+ {
+ PortalThemeMetaData themeMD = (PortalThemeMetaData)i.next();
+ themeService.addTheme(runtimeContext, themeMD);
+ }
+ theme = themeService.getTheme("renaissance", true);
+ }
+
+ public void testCreateMarkup() throws Exception
+ {
+ //
+ Map pageProps = new HashMap();
+ pageProps.put(ThemeConstants.PORTAL_AJAX_JAVASCRIPT_BASE, "/portal-ajax");
+ pageProps.put(ThemeConstants.PORTAL_AJAX_REMOTE_URL, "http://localhost:8080/portal-ajax/ajax");
+
+ //
+ Map portalProps = new HashMap();
+ portalProps.put(ThemeConstants.PORTAL_PROP_RENDERSET, renderSet.getName());
+
+ //
+ HTTPStreamInfo streamInfo = new HTTPStreamInfo(MediaType.HTML, "utf-8");
+ ServerRequest serverRequest = TestHelper.createServerRequest();
+
+ // pageresult obj
+ ModifiablePageResult pageResult = new ModifiablePageResult(TEST_PAGE_NAME, pageProps, portalProps);
+ pageResult.setLayoutURI(layout.getLayoutInfo().getURI());
+ pageResult.setTheme(theme);
+
+ // create window ctx/results and add to page result
+ for (int i = 0; i < LEFT_WINDOWS; i++)
+ {
+ String title = "WindowA_" + i + " Title";
+ String content = "<p>WindowA_" + i + " Content</p>";
+
+ WindowContext wCtx = new WindowContext("WindowA_" + i + "_Name", "WindowA_" + i, "left", i);
+ pageResult.addWindowContext(wCtx);
+ pageResult.addWindowResult(wCtx.getId(), createWindowMarkup(title, content, wCtx, portalProps, pageProps));
+
+ markupResult = createWindowMarkup(title, content, wCtx, portalProps, pageProps);
+ markupResult.addWindowContext(wCtx);
+
+ assertEquals(markupResult.getContent(), content);
+ assertEquals(markupResult.getTitle(), title);
+ }
+ for (int i = 0; i < CENTER_WINDOWS; i++)
+ {
+ String title = "WindowB_" + i + " Title";
+ String content = "<p>WindowB_" + i + " Content</p>";
+
+ WindowContext wCtx = new WindowContext("WindowB_" + i + "_Name", "WindowB_" + i, "center", i);
+ pageResult.addWindowContext(wCtx);
+ pageResult.addWindowResult(wCtx.getId(), createWindowMarkup(title, content, wCtx, portalProps, pageProps));
+
+ markupResult = createWindowMarkup(title, content, wCtx, portalProps, pageProps);
+ markupResult.addWindowContext(wCtx);
+
+ assertEquals(markupResult.getContent(), content);
+ assertEquals(markupResult.getTitle(), title);
+ }
+ markupResult.setPortalProperties(portalProps);
+
+ RenderContext renderCtx = new RenderContext(layout, streamInfo, markupResult, serverRequest);
+
+ // test renderer
+ assertEquals(renderCtx.getRegionRenderer(), renderCtx.getRegionRenderer(renderSet.getName()));
+ assertEquals(renderCtx.getLayoutRegionNames(), layout.getLayoutInfo().getRegionNames());
+ assertNull(renderCtx.getRegionOrientation());
+ assertNull(renderCtx.getRegionID());
+ assertTrue(renderSet.isAjaxEnabled());
+ assertEquals(renderCtx.getDecorationRenderer().getClass(), new DynaDecorationRenderer(new DivDecorationRenderer()).getClass());
+ assertEquals(renderCtx.getPortletRenderer().getClass(), new DynaPortletRenderer(new DivPortletRenderer()).getClass());
+ assertEquals(renderCtx.getRegionRenderer().getClass(), new DynaRegionRenderer(new DivRegionRenderer()).getClass());
+ assertEquals(renderCtx.getWindowRenderer().getClass(), new DynaWindowRenderer(new DivWindowRenderer()).getClass());
+
+ // test fragment + page props
+ assertNotNull(renderCtx.getMarkupFragment());
+ assertNotNull(renderCtx.getPageProperties());
+
+ // test window renderers
+ assertEquals(renderCtx.getWindowRenderer(), renderCtx.getWindowRenderer(markupResult));
+ assertEquals(renderCtx.getPortletRenderer(), renderCtx.getPortletRenderer(markupResult));
+ assertEquals(renderCtx.getDecorationRenderer(), renderCtx.getDecorationRenderer(markupResult));
+ assertNotNull(renderCtx.getRegionRenderer());
+ }
+
+ /**
+ * Generates the WindowResult for our windowcontext
+ *
+ * @param sTitle
+ * @param sContent
+ * @param wCtx
+ * @return window markup result
+ */
+ private ModifiableWindowResult createWindowMarkup(String sTitle, String sContent, WindowContext wCtx, Map portalProps, Map pageProps)
+ {
+ ModifiableWindowResult markupResult = new ModifiableWindowResult(sTitle, sContent, Collections.EMPTY_MAP, new HashMap(), null, null, null, null);
+ markupResult.addWindowContext(wCtx);
+ markupResult.setLayoutURI(layout.getLayoutInfo().getURI());
+ markupResult.setTheme(theme);
+ markupResult.setPortalProperties(portalProps);
+ markupResult.setPageProperties(pageProps);
+ markupResult.setPageName(TEST_PAGE_NAME);
+ return markupResult;
+ }
+}
More information about the jboss-svn-commits
mailing list