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 }