001    // Copyright 2004, 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.engine.encoders;
016    
017    import static org.easymock.EasyMock.expect;
018    
019    import org.apache.tapestry.BaseComponentTestCase;
020    import org.apache.tapestry.engine.ServiceEncoding;
021    import org.apache.tapestry.services.ServiceConstants;
022    import org.testng.annotations.Test;
023    
024    /**
025     * Tests for {@link org.apache.tapestry.engine.encoders.PageServiceEncoder}.
026     * 
027     * @author Howard M. Lewis Ship
028     * @since 4.0
029     */
030    @Test
031    public class TestPageServiceEncoder extends BaseComponentTestCase
032    {
033        public void testEncodeOtherService()
034        {
035            ServiceEncoding e = newMock(ServiceEncoding.class);
036    
037            expect(e.getParameterValue(ServiceConstants.SERVICE)).andReturn("foo");
038    
039            replay();
040    
041            PageServiceEncoder encoder = new PageServiceEncoder();
042            encoder.setServiceName("page");
043    
044            encoder.encode(e);
045    
046            verify();
047        }
048    
049        public void testEncode()
050        {
051            ServiceEncoding e = newMock(ServiceEncoding.class);
052    
053            expect(e.getParameterValue(ServiceConstants.SERVICE)).andReturn("page");
054    
055            expect(e.getParameterValue(ServiceConstants.PAGE)).andReturn("Home");
056    
057            e.setServletPath("/Home.html");
058            e.setParameterValue(ServiceConstants.SERVICE, null);
059            e.setParameterValue(ServiceConstants.PAGE, null);
060    
061            replay();
062    
063            PageServiceEncoder encoder = new PageServiceEncoder();
064            encoder.setServiceName("page");
065            encoder.setExtension("html");
066    
067            encoder.encode(e);
068    
069            verify();
070        }
071    
072        public void testEncodeHtm()
073        {
074            ServiceEncoding e = newMock(ServiceEncoding.class);
075    
076            expect(e.getParameterValue(ServiceConstants.SERVICE)).andReturn("page");
077    
078            expect(e.getParameterValue(ServiceConstants.PAGE)).andReturn("Home");
079    
080            e.setServletPath("/Home.htm");
081            e.setParameterValue(ServiceConstants.SERVICE, null);
082            e.setParameterValue(ServiceConstants.PAGE, null);
083    
084            replay();
085    
086            PageServiceEncoder encoder = new PageServiceEncoder();
087            encoder.setServiceName("page");
088            encoder.setExtension("htm");
089    
090            encoder.encode(e);
091    
092            verify();
093        }
094        
095        public void testEncodeInNamespace()
096        {
097            ServiceEncoding e = newMock(ServiceEncoding.class);
098    
099            expect(e.getParameterValue(ServiceConstants.SERVICE)).andReturn("page");
100    
101            expect(e.getParameterValue(ServiceConstants.PAGE)).andReturn("contrib:Foo");
102            
103            replay();
104    
105            PageServiceEncoder encoder = new PageServiceEncoder();
106            encoder.setServiceName("page");
107    
108            encoder.encode(e);
109    
110            verify();
111        }
112    
113        public void testDecodeNoExtension()
114        {
115            ServiceEncoding e = newMock(ServiceEncoding.class);
116    
117            expect(e.getServletPath()).andReturn("/app");
118            
119            replay();
120    
121            PageServiceEncoder encoder = new PageServiceEncoder();
122    
123            encoder.decode(e);
124    
125            verify();
126        }
127    
128        public void testDecodeEndsWithDot()
129        {
130            ServiceEncoding e = newMock(ServiceEncoding.class);
131    
132            expect(e.getServletPath()).andReturn("/ends.with.dot.");
133    
134            replay();
135    
136            PageServiceEncoder encoder = new PageServiceEncoder();
137    
138            encoder.decode(e);
139    
140            verify();
141        }
142    
143        public void testDecodeWrongExtension()
144        {
145            ServiceEncoding e = newMock(ServiceEncoding.class);
146    
147            expect(e.getServletPath()).andReturn("/Home.direct");
148    
149            replay();
150    
151            PageServiceEncoder encoder = new PageServiceEncoder();
152    
153            encoder.decode(e);
154    
155            verify();
156        }
157    
158        public void testDecodeSuccess()
159        {
160            ServiceEncoding e = newMock(ServiceEncoding.class);
161    
162            expect(e.getServletPath()).andReturn("/Home.html");
163    
164            e.setParameterValue(ServiceConstants.SERVICE, "page");
165            e.setParameterValue(ServiceConstants.PAGE, "Home");
166    
167            replay();
168    
169            PageServiceEncoder encoder = new PageServiceEncoder();
170            encoder.setExtension("html");
171            encoder.setServiceName("page");
172    
173            encoder.decode(e);
174    
175            verify();
176        }
177        
178        public void testDecodeHtmSuccess()
179        {
180            ServiceEncoding e = newMock(ServiceEncoding.class);
181    
182            expect(e.getServletPath()).andReturn("/Home.htm");
183    
184            e.setParameterValue(ServiceConstants.SERVICE, "page");
185            e.setParameterValue(ServiceConstants.PAGE, "Home");
186    
187            replay();
188    
189            PageServiceEncoder encoder = new PageServiceEncoder();
190            encoder.setExtension("htm");
191            encoder.setServiceName("page");
192    
193            encoder.decode(e);
194    
195            verify();
196        }
197    }