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;
016    
017    import java.util.HashMap;
018    import java.util.Map;
019    
020    import org.apache.tapestry.IPage;
021    import org.apache.tapestry.IRequestCycle;
022    import org.apache.tapestry.services.LinkFactory;
023    import org.apache.tapestry.services.ResetEventHub;
024    import org.apache.tapestry.services.ResponseRenderer;
025    import org.apache.tapestry.services.ServiceConstants;
026    import org.testng.annotations.Test;
027    
028    /**
029     * Tests for {@link org.apache.tapestry.engine.ResetService}.
030     * 
031     * @author Howard M. Lewis Ship
032     * @since 4.0
033     */
034    @Test
035    public class ResetServiceTest extends ServiceTestCase
036    {
037        public void testGetLink()
038        {
039            IRequestCycle cycle = newCycle();
040            IPage page = newPage();
041            LinkFactory lf = newLinkFactory();
042            ILink link = newLink();
043    
044            ResetService s = new ResetService();
045            s.setLinkFactory(lf);
046            s.setRequestCycle(cycle);
047    
048            trainGetPage(cycle, page);
049            trainGetPageName(page, "TargetPage");
050    
051            Map parameters = new HashMap();
052            parameters.put(ServiceConstants.PAGE, "TargetPage");
053    
054            trainConstructLink(lf, s, false, parameters, true, link);
055    
056            replay();
057    
058            assertSame(link, s.getLink(false, null));
059    
060            verify();
061        }
062    
063        public void testService() throws Exception
064        {
065            IRequestCycle cycle = newCycle();
066            ResetEventHub hub = newMock(ResetEventHub.class);
067            ResponseRenderer rr = newResponseRenderer();
068    
069            trainGetParameter(cycle, ServiceConstants.PAGE, "TargetPage");
070    
071            hub.fireResetEvent();
072    
073            cycle.activate("TargetPage");
074    
075            rr.renderResponse(cycle);
076    
077            replay();
078    
079            ResetService rs = new ResetService();
080            rs.setEnabled(true);
081            rs.setResetEventHub(hub);
082            rs.setResponseRenderer(rr);
083    
084            rs.service(cycle);
085    
086            verify();
087        }
088    
089        public void testServiceNotEnabled() throws Exception
090        {
091            IRequestCycle cycle = newCycle();
092            ResetEventHub hub = newMock(ResetEventHub.class);
093            ResponseRenderer rr = newResponseRenderer();
094    
095            trainGetParameter(cycle, ServiceConstants.PAGE, "TargetPage");
096    
097            cycle.activate("TargetPage");
098    
099            rr.renderResponse(cycle);
100    
101            replay();
102    
103            ResetService rs = new ResetService();
104            rs.setEnabled(false);
105            rs.setResetEventHub(hub);
106            rs.setResponseRenderer(rr);
107    
108            rs.service(cycle);
109    
110            verify();
111    
112        }
113    
114        public void testGetLinkNonNullParameter()
115        {
116            ResetService s = new ResetService();
117    
118            try
119            {
120                s.getLink(false, "NonNullValue");
121                unreachable();
122            }
123            catch (IllegalArgumentException ex)
124            {
125                assertEquals(EngineMessages.serviceNoParameter(s), ex.getMessage());
126            }
127        }
128    
129    }