001 // Copyright 2005 The Apache Software Foundation 002 // 003 // Licensed under the Apache License, Version 2.0 (the "License"); 004 // you may not use this file except in compliance with the License. 005 // You may obtain a copy of the License at 006 // 007 // http://www.apache.org/licenses/LICENSE-2.0 008 // 009 // Unless required by applicable law or agreed to in writing, software 010 // distributed under the License is distributed on an "AS IS" BASIS, 011 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 012 // See the License for the specific language governing permissions and 013 // limitations under the License. 014 015 package org.apache.tapestry.portlet; 016 017 import static org.easymock.EasyMock.checkOrder; 018 import static org.easymock.EasyMock.expect; 019 020 import java.util.HashMap; 021 import java.util.Map; 022 023 import org.apache.tapestry.BaseComponentTestCase; 024 import org.apache.tapestry.IRequestCycle; 025 import org.apache.tapestry.engine.ILink; 026 import org.apache.tapestry.services.LinkFactory; 027 import org.apache.tapestry.services.ResponseRenderer; 028 import org.testng.annotations.Test; 029 030 /** 031 * Tests for {@link org.apache.tapestry.portlet.PortletHomeService}. 032 * 033 * @author Howard M. Lewis Ship 034 * @since 4.0 035 */ 036 @Test 037 public class TestPortletHomeService extends BaseComponentTestCase 038 { 039 private ResponseRenderer newResponseRenderer() 040 { 041 return newMock(ResponseRenderer.class); 042 } 043 044 private PortletRequestGlobals newRequestGlobals(boolean isRender) 045 { 046 PortletRequestGlobals globals = newMock(PortletRequestGlobals.class); 047 checkOrder(globals, false); 048 049 expect(globals.isRenderRequest()).andReturn(isRender); 050 051 return globals; 052 } 053 054 private PortletRenderer newPortletRenderer() 055 { 056 return newMock(PortletRenderer.class); 057 } 058 059 private PortletPageResolver newResolver(IRequestCycle cycle, String pageName) 060 { 061 PortletPageResolver resolver = newMock(PortletPageResolver.class); 062 063 expect(resolver.getPageNameForRequest(cycle)).andReturn(pageName); 064 065 return resolver; 066 } 067 068 public void testIsRenderRequest() throws Exception 069 { 070 IRequestCycle cycle = newCycle(); 071 PortletRequestGlobals globals = newRequestGlobals(true); 072 PortletRenderer renderer = newPortletRenderer(); 073 PortletPageResolver resolver = newResolver(cycle, "ZePage"); 074 075 renderer.renderPage(cycle, "ZePage"); 076 077 replay(); 078 079 PortletHomeService phs = new PortletHomeService(); 080 phs.setPageResolver(resolver); 081 phs.setPortletRenderer(renderer); 082 phs.setRequestGlobals(globals); 083 084 phs.service(cycle); 085 086 verify(); 087 } 088 089 public void testIsActionRequest() throws Exception 090 { 091 IRequestCycle cycle = newCycle(); 092 PortletRequestGlobals globals = newRequestGlobals(false); 093 094 ResponseRenderer renderer = newResponseRenderer(); 095 096 PortletPageResolver resolver = newResolver(cycle, "ZePage"); 097 098 cycle.activate("ZePage"); 099 renderer.renderResponse(cycle); 100 101 replay(); 102 103 PortletHomeService phs = new PortletHomeService(); 104 phs.setResponseRenderer(renderer); 105 phs.setRequestGlobals(globals); 106 phs.setPageResolver(resolver); 107 108 phs.service(cycle); 109 110 verify(); 111 } 112 113 public void testGetLink() 114 { 115 Map parameters = new HashMap(); 116 117 LinkFactory factory = newMock(LinkFactory.class); 118 ILink link = newMock(ILink.class); 119 120 PortletHomeService phs = new PortletHomeService(); 121 phs.setLinkFactory(factory); 122 123 expect(factory.constructLink(phs, false, parameters, true)).andReturn(link); 124 125 replay(); 126 127 assertSame(link, phs.getLink(false, null)); 128 129 verify(); 130 } 131 132 public void testGetLinkWithParameter() 133 { 134 try 135 { 136 new PortletHomeService().getLink(false, "PARAMETER"); 137 unreachable(); 138 } 139 catch (IllegalArgumentException ex) 140 { 141 assertEquals("The home service does not require a parameter object.", ex.getMessage()); 142 } 143 } 144 }