<?xml version="1.0" encoding="UTF-8"?>

<!-- $Id$ -->
<!--
   Copyright 2004 The Apache Software Foundation
  
   Licensed under the Apache License, Version 2.0 (the "License");
   you may not use this file except in compliance with the License.
   You may obtain a copy of the License at
  
       http://www.apache.org/licenses/LICENSE-2.0
  
   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.
-->
<mock-test>
    <context name="c2" root="context2"/>

  	<servlet name="app" class="org.apache.tapestry.ApplicationServlet">
  		<init-parameter
  			name="org.apache.tapestry.application-specification"
  			value="/org/apache/tapestry/junit/mock/c2/C2.application"/>
  	</servlet>      
    
<!-- Check that the home service is the default service. -->
    
    <request>   			
		<assert-output name="Title">
<![CDATA[
<title>Implicit Home Page</title>
]]>
		</assert-output>		

		<assert-output name="Text from Home Page">
No page specification.
		</assert-output>
		
	</request>	
	
	<request>
		<parameter name="service" value="page/WithApplication"/>
		
		<assert-output name="Title">
<![CDATA[
<title>WithApplication Page</title>
]]>
		</assert-output>		

		<assert-output name="Text from page">
This page's specification is a sibling of the app specification.
		</assert-output>
				
	</request>	
			
	<request>
		<parameter name="service" value="page/InPages"/>
		
		<assert-output name="Title">
<![CDATA[
<title>InPages Page</title>
]]>
		</assert-output>		

		<assert-output name="Text from page">
The specification, and properties files, are located in WEB-INF/pages.
		</assert-output>
				
	</request>
	
	<request>
		<parameter name="service" value="page/InWebInf"/>
		
		<assert-output name="Title">
<![CDATA[
<title>InWebInf Page</title>
]]>
		</assert-output>		

		<assert-output name="Text from page">
The specification, and properties files, are located in directly in WEB-INF.
		</assert-output>
				
	</request>	
	
	<request>
		<parameter name="service" value="page/InAppRoot"/>
		
		<assert-output name="Title">
<![CDATA[
<title>InAppRoot Page</title>
]]>
		</assert-output>		

		<assert-output name="Text from page">
The specification, and properties files, are located in the application root.
		</assert-output>
				
	</request>	
	
		
	<request>
		<parameter name="service" value="page/StaleLink"/>
		
		<assert-output name="Title">
<![CDATA[
<title>Application StaleLink Page</title>
]]>
		</assert-output>		

		<assert-output name="Text from page">
This is an application-provided version of the StaleLink page.
		</assert-output>
				
	</request>	
	
	<request>
		<parameter name="service" value="page/framework:StaleLink"/>
		
		<assert-output name="Title">
<![CDATA[
<title>Stale Link</title>
]]>
		</assert-output>		

		<assert-output name="Text from page">
<![CDATA[
You have clicked on a <i>stale link</i>.
]]>
		</assert-output>
				
	</request>							 	 	 
</mock-test>
    	
