Author: julien(a)jboss.com
Date: 2008-03-11 09:07:37 -0400 (Tue, 11 Mar 2008)
New Revision: 10261
Added:
modules/portlet/trunk/controller/src/test/java/org/jboss/portal/portlet/controller/PortletControllerRequestTestCase.java
Modified:
modules/portlet/trunk/controller/src/test/java/org/jboss/portal/portlet/controller/PortletControllerTestCase.java
modules/portlet/trunk/controller/src/test/resources/local-jboss-unit.xml
modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/portlet/support/PortletSupport.java
Log:
more controller testing
Added:
modules/portlet/trunk/controller/src/test/java/org/jboss/portal/portlet/controller/PortletControllerRequestTestCase.java
===================================================================
---
modules/portlet/trunk/controller/src/test/java/org/jboss/portal/portlet/controller/PortletControllerRequestTestCase.java
(rev 0)
+++
modules/portlet/trunk/controller/src/test/java/org/jboss/portal/portlet/controller/PortletControllerRequestTestCase.java 2008-03-11
13:07:37 UTC (rev 10261)
@@ -0,0 +1,190 @@
+/******************************************************************************
+ * JBoss, a division of Red Hat *
+ * Copyright 2008, 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.portlet.controller;
+
+import static org.jboss.unit.api.Assert.*;
+import org.jboss.unit.api.pojo.annotations.Test;
+import org.jboss.portal.portlet.support.PortletInvokerSupport;
+import org.jboss.portal.portlet.support.PortletSupport;
+import org.jboss.portal.portlet.invocation.response.PortletInvocationResponse;
+import org.jboss.portal.portlet.invocation.response.UpdateNavigationalStateResponse;
+import org.jboss.portal.portlet.invocation.ActionInvocation;
+import org.jboss.portal.portlet.invocation.ResourceInvocation;
+import org.jboss.portal.portlet.PortletInvokerException;
+import org.jboss.portal.portlet.OpaqueStateString;
+import org.jboss.portal.portlet.StateString;
+import org.jboss.portal.portlet.cache.CacheLevel;
+import org.jboss.portal.portlet.controller.request.PortletActionRequest;
+import org.jboss.portal.portlet.controller.request.PortletResourceRequest;
+import org.jboss.portal.portlet.controller.request.PortletRenderRequest;
+import org.jboss.portal.portlet.controller.state.WindowNavigationalState;
+import org.jboss.portal.portlet.controller.state.PageNavigationalState;
+import org.jboss.portal.portlet.controller.response.ControllerResponse;
+import org.jboss.portal.common.util.ParameterMap;
+import org.jboss.portal.Mode;
+import org.jboss.portal.WindowState;
+
+import java.util.Collections;
+import java.util.HashMap;
+
+/**
+ * @author <a href="mailto:julien@jboss-portal.org">Julien
Viet</a>
+ * @version $Revision: 630 $
+ */
+@Test
+public class PortletControllerRequestTestCase
+{
+
+ /** . */
+ PortletController controller = new PortletController();
+
+ /** . */
+ PortletControllerContextSupport context = new PortletControllerContextSupport();
+
+ /** . */
+ WiringEventControllerContext eventControllerContext = new
WiringEventControllerContext();
+
+ /** . */
+ PortletInvokerSupport invoker = context.getInvoker();
+
+ /** . */
+ PageNavigationalState pageNS =
context.getStateControllerContext().createPageNavigationalState(false);
+
+ /** . */
+ StateString portletNS = new OpaqueStateString("abc");
+
+ /** . */
+ WindowNavigationalState windowNS = new WindowNavigationalState(portletNS, Mode.EDIT,
WindowState.MAXIMIZED);
+
+ /** . */
+ ParameterMap body = new ParameterMap(Collections.singletonMap("param", new
String[]{"value"}));
+
+ /** . */
+ OpaqueStateString is = new OpaqueStateString("is");
+
+ /** . */
+ OpaqueStateString rs = new OpaqueStateString("rs");
+
+ @Test
+ public void testPortletControllerActionRequest() throws PortletInvokerException
+ {
+ PortletSupport fooPortlet = invoker.addPortlet("foo");
+ fooPortlet.addHandler(new PortletSupport.ActionHandler()
+ {
+ protected PortletInvocationResponse invoke(ActionInvocation action) throws
PortletInvokerException
+ {
+ assertNotNull(action);
+ assertEquals(is, action.getInteractionState());
+ assertEquals(portletNS, action.getNavigationalState());
+ assertEquals(Mode.EDIT, action.getMode());
+ assertEquals(WindowState.MAXIMIZED, action.getWindowState());
+ assertEquals(body, action.getForm());
+
+ //
+ return new UpdateNavigationalStateResponse();
+ }
+ });
+
+ //
+ PortletActionRequest action = new PortletActionRequest("foo", is, body,
windowNS, pageNS);
+
+ //
+ controller.process(context, action);
+ }
+
+ @Test
+ public void testPortletControllerRenderRequest() throws PortletInvokerException
+ {
+ invoker.addPortlet("foo");
+ PortletRenderRequest render = new PortletRenderRequest("foo", windowNS,
new HashMap<String, String[]>(), pageNS);
+ controller.process(context, render);
+ }
+
+ @Test
+ public void testPortletControllerResourceRequest() throws PortletInvokerException
+ {
+ PortletSupport fooPortlet = invoker.addPortlet("foo");
+ fooPortlet.addHandler(new PortletSupport.ResourceHandler()
+ {
+ protected PortletInvocationResponse invoke(ResourceInvocation resServing) throws
PortletInvokerException
+ {
+ assertNotNull(resServing);
+ assertEquals("resourceid", resServing.getResourceId());
+ assertEquals(rs, resServing.getResourceState());
+ assertEquals(CacheLevel.FULL, resServing.getCacheLevel());
+ assertEquals(null, resServing.getNavigationalState());
+ assertEquals(Mode.VIEW, resServing.getMode());
+ assertEquals(WindowState.NORMAL, resServing.getWindowState());
+ assertEquals(body, resServing.getForm());
+
+ //
+ return new UpdateNavigationalStateResponse();
+ }
+ });
+ fooPortlet.addHandler(new PortletSupport.ResourceHandler()
+ {
+ protected PortletInvocationResponse invoke(ResourceInvocation resServing) throws
PortletInvokerException
+ {
+ assertNotNull(resServing);
+ assertEquals("resourceid", resServing.getResourceId());
+ assertEquals(rs, resServing.getResourceState());
+ assertEquals(CacheLevel.PORTLET, resServing.getCacheLevel());
+ assertEquals(portletNS, resServing.getNavigationalState());
+ assertEquals(Mode.EDIT, resServing.getMode());
+ assertEquals(WindowState.MAXIMIZED, resServing.getWindowState());
+ assertEquals(body, resServing.getForm());
+
+ //
+ return new UpdateNavigationalStateResponse();
+ }
+ });
+ fooPortlet.addHandler(new PortletSupport.ResourceHandler()
+ {
+ protected PortletInvocationResponse invoke(ResourceInvocation resServing) throws
PortletInvokerException
+ {
+ assertNotNull(resServing);
+ assertEquals("resourceid", resServing.getResourceId());
+ assertEquals(rs, resServing.getResourceState());
+ assertEquals(CacheLevel.PAGE, resServing.getCacheLevel());
+ assertEquals(portletNS, resServing.getNavigationalState());
+ assertEquals(Mode.EDIT, resServing.getMode());
+ assertEquals(WindowState.MAXIMIZED, resServing.getWindowState());
+ assertEquals(body, resServing.getForm());
+
+ //
+ return new UpdateNavigationalStateResponse();
+ }
+ });
+
+ //
+ PortletResourceRequest fullServing = new PortletResourceRequest("foo",
"resourceid", rs, body, new PortletResourceRequest.FullScope());
+ PortletResourceRequest portletServing = new PortletResourceRequest("foo",
"resourceid", rs, body, new PortletResourceRequest.PortletScope(windowNS));
+ PortletResourceRequest pageServing = new PortletResourceRequest("foo",
"resourceid", rs, body, new PortletResourceRequest.PageScope(windowNS,
pageNS));
+
+ //
+ controller.process(context, fullServing);
+ controller.process(context, portletServing);
+ controller.process(context, pageServing);
+ }
+
+}
Modified:
modules/portlet/trunk/controller/src/test/java/org/jboss/portal/portlet/controller/PortletControllerTestCase.java
===================================================================
---
modules/portlet/trunk/controller/src/test/java/org/jboss/portal/portlet/controller/PortletControllerTestCase.java 2008-03-11
10:59:19 UTC (rev 10260)
+++
modules/portlet/trunk/controller/src/test/java/org/jboss/portal/portlet/controller/PortletControllerTestCase.java 2008-03-11
13:07:37 UTC (rev 10261)
@@ -23,6 +23,7 @@
package org.jboss.portal.portlet.controller;
import org.jboss.portal.portlet.controller.request.ControllerRequest;
+import org.jboss.portal.portlet.controller.request.PortletRenderRequest;
import org.jboss.portal.portlet.controller.state.PageNavigationalState;
import org.jboss.portal.portlet.controller.state.WindowNavigationalState;
import org.jboss.portal.portlet.controller.response.ControllerResponse;
@@ -36,6 +37,7 @@
import org.jboss.portal.portlet.controller.handlers.NoOpEventHandler;
import org.jboss.portal.portlet.PortletInvokerException;
import org.jboss.portal.portlet.OpaqueStateString;
+import org.jboss.portal.portlet.StateString;
import org.jboss.portal.portlet.support.PortletSupport;
import org.jboss.portal.portlet.support.PortletInvokerSupport;
import org.jboss.portal.portlet.support.info.EventInfoSupport;
@@ -80,6 +82,25 @@
}
@Test
+ public void testPortletControllerRenderRequest() throws PortletInvokerException
+ {
+ invoker.addPortlet("foo");
+ StateString portletNS = new OpaqueStateString("abc");
+ PageNavigationalState pageNS =
context.getStateControllerContext().createPageNavigationalState(true);
+ WindowNavigationalState windowNS = new WindowNavigationalState(portletNS,
Mode.EDIT, WindowState.MAXIMIZED);
+ PortletRenderRequest render = new PortletRenderRequest("foo", windowNS,
new HashMap<String, String[]>(), pageNS);
+ ControllerResponse response = controller.process(context, render);
+ PageUpdateResponse pageUpdate = assertInstanceOf(response,
PageUpdateResponse.class);
+ PageNavigationalState pageNS2 =
assertNotNull(pageUpdate.getPageNavigationalState());
+ assertEquals(Tools.toSet("foo"), pageNS2.getWindowIds());
+ WindowNavigationalState windowNS2 =
pageNS2.getWindowNavigationalState("foo");
+ assertNotNull(windowNS2);
+ assertEquals(portletNS, windowNS2.getPortletNavigationalState());
+ assertEquals(Mode.EDIT, windowNS2.getMode());
+ assertEquals(WindowState.MAXIMIZED, windowNS2.getWindowState());
+ }
+
+ @Test
public void testAction() throws PortletInvokerException
{
testAction(false);
Modified: modules/portlet/trunk/controller/src/test/resources/local-jboss-unit.xml
===================================================================
--- modules/portlet/trunk/controller/src/test/resources/local-jboss-unit.xml 2008-03-11
10:59:19 UTC (rev 10260)
+++ modules/portlet/trunk/controller/src/test/resources/local-jboss-unit.xml 2008-03-11
13:07:37 UTC (rev 10261)
@@ -13,5 +13,8 @@
<test>
<class
name="org.jboss.portal.portlet.controller.PortletControllerRequestConstructorTestCase"/>
</test>
+ <test>
+ <class
name="org.jboss.portal.portlet.controller.PortletControllerRequestTestCase"/>
+ </test>
</pojo>
</jboss-unit>
Modified:
modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/portlet/support/PortletSupport.java
===================================================================
---
modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/portlet/support/PortletSupport.java 2008-03-11
10:59:19 UTC (rev 10260)
+++
modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/portlet/support/PortletSupport.java 2008-03-11
13:07:37 UTC (rev 10261)
@@ -25,12 +25,12 @@
import org.jboss.portal.portlet.PortletInvokerException;
import org.jboss.portal.portlet.PortletContext;
import org.jboss.portal.portlet.Portlet;
-import org.jboss.portal.portlet.info.PortletInfo;
import org.jboss.portal.portlet.support.info.PortletInfoSupport;
import org.jboss.portal.portlet.invocation.PortletInvocation;
import org.jboss.portal.portlet.invocation.ActionInvocation;
import org.jboss.portal.portlet.invocation.EventInvocation;
import org.jboss.portal.portlet.invocation.RenderInvocation;
+import org.jboss.portal.portlet.invocation.ResourceInvocation;
import org.jboss.portal.portlet.invocation.response.PortletInvocationResponse;
import org.jboss.portal.common.value.Value;
import static org.jboss.unit.api.Assert.*;
@@ -201,4 +201,20 @@
protected abstract PortletInvocationResponse invoke(RenderInvocation action) throws
PortletInvokerException;
}
+
+ public static abstract class ResourceHandler extends InvocationHandler
+ {
+ protected final PortletInvocationResponse invoke(PortletInvocation invocation)
throws PortletInvokerException
+ {
+ if (invocation instanceof ResourceInvocation)
+ {
+ return invoke((ResourceInvocation)invocation);
+ }
+
+ //
+ throw new AssertionError();
+ }
+
+ protected abstract PortletInvocationResponse invoke(ResourceInvocation action)
throws PortletInvokerException;
+ }
}