package org.apache.struts2.components; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionProxy; import com.opensymphony.xwork2.util.ValueStack; import org.apache.struts2.StrutsStatics; import org.apache.struts2.StrutsTestCase; import org.apache.struts2.portlet.PortletConstants; import org.springframework.mock.web.portlet.MockMimeResponse; import org.springframework.mock.web.portlet.MockPortletContext; import org.springframework.mock.web.portlet.MockPortletRequest; import javax.portlet.PortletContext; import javax.portlet.PortletMode; import java.io.StringWriter; import java.io.Writer; import java.util.Collections; public class PortletUrlRendererTest extends StrutsTestCase { private ValueStack stack; public void setUp() throws Exception { super.setUp(); ActionProxy actionProxy = getActionProxy("/portlettest/test"); // creates new empty ActionContext ActionContext.getContext().put(ActionContext.ACTION_INVOCATION, actionProxy.getInvocation()); PortletContext portletCtx = new MockPortletContext(); ActionContext.getContext().put(StrutsStatics.STRUTS_PORTLET_CONTEXT, portletCtx); ActionContext.getContext().put(PortletConstants.REQUEST, new MockPortletRequest(portletCtx)); ActionContext.getContext().put(PortletConstants.RESPONSE, new MockMimeResponse()); ActionContext.getContext().put(PortletConstants.MODE_NAMESPACE_MAP, Collections.emptyMap()); stack = actionProxy.getInvocation().getStack(); } public void testRenderUrlWithNamespace() throws Exception { // given PortletUrlRenderer renderer = new PortletUrlRenderer(); UrlProvider component = new URL(stack, request, response).getUrlProvider(); Writer writer = new StringWriter(); // when renderer.renderUrl(writer, component); // then assertTrue("/portlettest".equals(component.getNamespace())); } public void testIsPortelModeChanged() { PortletUrlRenderer renderer = new PortletUrlRenderer(); PortletMode mode = new PortletMode("test"); UrlProvider provider = new ComponentUrlProvider(null, null); provider.setPortletMode("test2"); assertTrue(renderer.isPortletModeChange(provider, mode)); } }