001// Copyright 2007, 2009, 2011 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
015package org.apache.tapestry5.internal.test;
016
017import org.apache.tapestry5.http.services.Request;
018import org.apache.tapestry5.test.PageTester;
019
020import java.util.Locale;
021
022/**
023 * An extended version of {@link Request} that allows the {@link PageTester} to control and override behavior,
024 * effectively simulating the portions of {@link Request} that are provided normally by a servlet container.
025 */
026public interface TestableRequest extends Request
027{
028    /**
029     * Clears the internal parameters map.
030     * 
031     * @return the request for further configuration
032     */
033    TestableRequest clear();
034
035    /**
036     * Sets the path; the path should begin with a "/" character and contain everything from there to the start of query
037     * parameters (if any).
038     * 
039     * @param path
040     * @return the request for further configuration
041     */
042    TestableRequest setPath(String path);
043
044    /**
045     * Sets the locale requested by "the browser".
046     * 
047     * @return the request for further configuration
048     */
049    TestableRequest setLocale(Locale locale);
050
051    /**
052     * Loads a single parameter/value pair. This may define a new parameter, or add a value to a list of parameters.
053     * 
054     * @return the request for further configuration
055     */
056    TestableRequest loadParameter(String parameterName, String parameterValue);
057
058    /**
059     * Overrides a parameter to the specific value, regardless of how the parameter was previously set.
060     */
061    TestableRequest overrideParameter(String parameterName, String parameterValue);
062}