001    package org.apache.tapestry.engine.encoders;
002    
003    import org.apache.tapestry.TestBase;
004    import org.apache.tapestry.engine.ServiceEncoding;
005    import org.apache.tapestry.services.ServiceConstants;
006    import static org.easymock.EasyMock.expect;
007    import org.testng.annotations.Test;
008    
009    /**
010     * Tests functionality of the {@link PathEncoder} .
011     */
012    @Test
013    public class PathEncoderTest extends TestBase {
014    
015        public void test_Wrong_Service()
016        {
017            ServiceEncoding encoding = newEncoding();
018    
019            trainGetParameterValue(encoding, ServiceConstants.SERVICE, "foo");
020    
021            replay();
022    
023            PathEncoder encoder = new PathEncoder();
024            encoder.setService("bar");
025            
026            encoder.encode(encoding);
027    
028            verify();
029        }
030    
031        protected void trainGetParameterValue(ServiceEncoding encoding, String name, String value)
032        {
033            expect(encoding.getParameterValue(name)).andReturn(value);
034        }
035    
036        protected ServiceEncoding newEncoding()
037        {
038            return newMock(ServiceEncoding.class);
039        }
040    
041        public void test_Wrong_Path()
042        {
043            ServiceEncoding encoding = newEncoding();
044    
045            trainGetServletPath(encoding, "/Home.page");
046    
047            replay();
048    
049            PathEncoder encoder = new PathEncoder();
050            encoder.setPath("/rounded");
051            encoder.setService("rounded");
052            
053            encoder.decode(encoding);
054    
055            verify();
056        }
057    
058        protected void trainGetServletPath(ServiceEncoding encoding, String servletPath)
059        {
060            expect(encoding.getServletPath()).andReturn(servletPath);
061        }
062    
063        public void test_Encode()
064        {
065            ServiceEncoding encoding = newEncoding();
066    
067            trainGetParameterValue(encoding, ServiceConstants.SERVICE, "rounded");
068    
069            encoding.setServletPath("/rounded");
070            encoding.setParameterValue(ServiceConstants.SERVICE, null);
071    
072            replay();
073    
074            PathEncoder encoder = new PathEncoder();
075            encoder.setPath("/rounded");
076            encoder.setService("rounded");
077    
078            encoder.encode(encoding);
079    
080            verify();
081        }
082    }