001 // Copyright 2006 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.expect; 018 019 import org.apache.tapestry.BaseComponentTestCase; 020 import org.apache.tapestry.IRequestCycle; 021 import org.apache.tapestry.services.ServiceConstants; 022 import org.testng.annotations.Test; 023 024 import javax.portlet.PortletMode; 025 import javax.portlet.PortletRequest; 026 import javax.portlet.WindowState; 027 028 /** 029 * Test for {@link org.apache.tapestry.portlet.RenderService}. 030 * 031 * @author Howard M. Lewis Ship 032 * @since 4.0 033 */ 034 @Test 035 public class TestRenderService extends BaseComponentTestCase 036 { 037 public void testGetLinkUnsupported() 038 { 039 RenderService rs = new RenderService(); 040 041 try 042 { 043 rs.getLink(false, null); 044 unreachable(); 045 } 046 catch (UnsupportedOperationException ex) 047 { 048 // Hm. Not actually the best message! 049 assertEquals("Method getLink() is not supported for portlet requests.", ex.getMessage()); 050 } 051 } 052 053 public void testNormal() throws Exception 054 { 055 IRequestCycle cycle = newCycle(); 056 PortletRequest request = newMock(PortletRequest.class); 057 058 PortletRenderer renderer = newMock(PortletRenderer.class); 059 060 trainGetParameter(cycle, PortletConstants.PORTLET_MODE, "view"); 061 trainGetParameter(cycle, PortletConstants.WINDOW_STATE, "normal"); 062 063 trainGetPortletMode(request, PortletMode.VIEW); 064 trainGetWindowState(request, WindowState.NORMAL); 065 066 trainGetParameter(cycle, ServiceConstants.PAGE, "Fred"); 067 068 renderer.renderPage(cycle, "Fred"); 069 070 replay(); 071 072 RenderService rs = new RenderService(); 073 rs.setPortletRenderer(renderer); 074 rs.setRequest(request); 075 076 rs.service(cycle); 077 078 verify(); 079 } 080 081 public void testPortletModeChanged() throws Exception 082 { 083 IRequestCycle cycle = newCycle(); 084 PortletRequest request = newMock(PortletRequest.class); 085 086 PortletRenderer renderer = newMock(PortletRenderer.class); 087 088 trainGetParameter(cycle, PortletConstants.PORTLET_MODE, "view"); 089 trainGetParameter(cycle, PortletConstants.WINDOW_STATE, "normal"); 090 091 trainGetPortletMode(request, PortletMode.EDIT); 092 093 PortletPageResolver resolver = newResolver(cycle, "Barney"); 094 095 renderer.renderPage(cycle, "Barney"); 096 097 replay(); 098 099 RenderService rs = new RenderService(); 100 rs.setPortletRenderer(renderer); 101 rs.setRequest(request); 102 rs.setPageResolver(resolver); 103 104 rs.service(cycle); 105 106 verify(); 107 } 108 109 public void testWindowStateChanged() throws Exception 110 { 111 IRequestCycle cycle = newCycle(); 112 PortletRequest request = newMock(PortletRequest.class); 113 114 PortletRenderer renderer = newMock(PortletRenderer.class); 115 116 trainGetParameter(cycle, PortletConstants.PORTLET_MODE, "view"); 117 trainGetParameter(cycle, PortletConstants.WINDOW_STATE, "normal"); 118 119 trainGetPortletMode(request, PortletMode.VIEW); 120 trainGetWindowState(request, WindowState.MAXIMIZED); 121 122 PortletPageResolver resolver = newResolver(cycle, "Wilma"); 123 124 renderer.renderPage(cycle, "Wilma"); 125 126 replay(); 127 128 RenderService rs = new RenderService(); 129 rs.setPortletRenderer(renderer); 130 rs.setRequest(request); 131 rs.setPageResolver(resolver); 132 133 rs.service(cycle); 134 135 verify(); 136 } 137 138 private PortletPageResolver newResolver(IRequestCycle cycle, String pageName) 139 { 140 PortletPageResolver resolver = newMock(PortletPageResolver.class); 141 142 expect(resolver.getPageNameForRequest(cycle)).andReturn(pageName); 143 144 return resolver; 145 } 146 147 private void trainGetWindowState(PortletRequest request, WindowState state) 148 { 149 expect(request.getWindowState()).andReturn(state); 150 } 151 152 private void trainGetPortletMode(PortletRequest request, PortletMode mode) 153 { 154 expect(request.getPortletMode()).andReturn(mode); 155 } 156 }