package org.springframework.faces.webflow; import java.util.Arrays; import java.util.Collection; import java.util.List; import javax.faces.context.PartialViewContext; import javax.faces.context.PartialViewContextWrapper; import junit.framework.TestCase; import org.springframework.webflow.execution.RequestContext; import org.springframework.webflow.execution.RequestContextHolder; import org.springframework.webflow.execution.View; import org.springframework.webflow.test.MockRequestContext; public class FlowPartialViewContextTests extends TestCase { protected void tearDown() throws Exception { super.tearDown(); RequestContextHolder.setRequestContext(null); } public void testReturnFragmentIds() throws Exception { String[] fragmentIds = new String[] { "foo", "bar" }; RequestContext requestContext = new MockRequestContext(); requestContext.getFlashScope().asMap().put(View.RENDER_FRAGMENTS_ATTRIBUTE, fragmentIds); RequestContextHolder.setRequestContext(requestContext); assertEquals(Arrays.asList(fragmentIds), new FlowPartialViewContext(null).getRenderIds()); } public void testNoFragmentIds() throws Exception { final List<String> renderIds = Arrays.asList("foo", "bar"); FlowPartialViewContext context = new FlowPartialViewContext(new PartialViewContextWrapper() { public Collection<String> getRenderIds() { return renderIds; } public void setPartialRequest(boolean isPartialRequest) { } public PartialViewContext getWrapped() { return null; } }); RequestContextHolder.setRequestContext(new MockRequestContext()); assertEquals(renderIds, context.getRenderIds()); } public void testReturnFragmentIdsMutable() throws Exception { String[] fragmentIds = new String[] { "foo", "bar" }; RequestContext requestContext = new MockRequestContext(); requestContext.getFlashScope().asMap().put(View.RENDER_FRAGMENTS_ATTRIBUTE, fragmentIds); RequestContextHolder.setRequestContext(requestContext); Collection<String> renderIds = new FlowPartialViewContext(null).getRenderIds(); renderIds.add("baz"); assertEquals(Arrays.asList("foo", "bar", "baz"), renderIds); } }