001    /*
002     * Licensed to the Apache Software Foundation (ASF) under one or more
003     * contributor license agreements.  See the NOTICE file distributed with
004     * this work for additional information regarding copyright ownership.
005     * The ASF licenses this file to You under the Apache License, Version 2.0
006     * (the "License"); you may not use this file except in compliance with
007     * the License.  You may obtain a copy of the License at
008     *
009     *     http://www.apache.org/licenses/LICENSE-2.0
010     *
011     * Unless required by applicable law or agreed to in writing, software
012     * distributed under the License is distributed on an "AS IS" BASIS,
013     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014     * See the License for the specific language governing permissions and
015     * limitations under the License.
016     */
017    package org.apache.commons.chain.web.servlet;
018    
019    
020    import junit.framework.Test;
021    import junit.framework.TestCase;
022    import junit.framework.TestSuite;
023    import org.apache.commons.chain.Context;
024    
025    import javax.servlet.ServletContext;
026    import javax.servlet.http.HttpServletRequest;
027    import javax.servlet.http.HttpServletResponse;
028    import javax.servlet.http.HttpSession;
029    import java.util.Locale;
030    
031    
032    // Test case for org.apache.commons.chain.web.servlet.ServletSetLocaleCommand
033    
034    public class ServletSetLocaleCommandTestCase extends TestCase {
035    
036    
037        // ---------------------------------------------------------- Constructors
038    
039        /**
040         * Construct a new instance of this test case.
041         *
042         * @param name Name of the test case
043         */
044        public ServletSetLocaleCommandTestCase(String name) {
045            super(name);
046        }
047    
048    
049        // ----------------------------------------------------- Instance Variables
050    
051    
052        protected Locale locale = null;
053    
054        // Servlet API Objects
055        protected ServletContext scontext = null;
056        protected HttpServletRequest request = null;
057        protected HttpServletResponse response = null;
058        protected HttpSession session = null;
059    
060        // Chain API Objects
061        protected Context context = null;
062        protected ServletGetLocaleCommand command = null;
063    
064    
065        // -------------------------------------------------- Overall Test Methods
066    
067    
068        /**
069         * Set up instance variables required by this test case.
070         */
071        public void setUp() {
072    
073        locale = new Locale("en", "US");
074    
075        // Set up Servlet API Objects
076            scontext = new MockServletContext();
077            session = new MockHttpSession(scontext);
078            request = new MockHttpServletRequest("/context", "/servlet",
079                                                 "/path/info", "a=b&c=d",
080                                                 session);
081            response = new MockHttpServletResponse();
082    
083        // Set up Chain API Objects
084            context = new ServletWebContext(scontext, request, response);
085        command = new ServletGetLocaleCommand();
086    
087        }
088    
089    
090        /**
091         * Return the tests included in this test suite.
092         */
093        public static Test suite() {
094    
095            return (new TestSuite(ServletGetLocaleCommandTestCase.class));
096    
097        }
098    
099    
100        /**
101         * Tear down instance variables required by this test case.
102         */
103        public void tearDown() {
104    
105            scontext = null;
106            session = null;
107            request = null;
108            response = null;
109    
110            context = null;
111        command = null;
112    
113        }
114    
115    
116        // ------------------------------------------------- Individual Test Methods
117    
118    
119        // Test configured behavior
120        public void testConfigured() throws Exception {
121    
122        command.setLocaleKey("special");
123        assertEquals("special", command.getLocaleKey());
124        check(context, command);
125    
126        }
127    
128    
129        // Test default behavior
130        public void testDefaut() throws Exception {
131    
132        assertEquals("locale", command.getLocaleKey());
133        check(context, command);
134    
135        }
136    
137    
138        // --------------------------------------------------------- Support Methods
139    
140    
141        protected void check(Context context, ServletGetLocaleCommand command)
142        throws Exception {
143    
144        String localeKey = command.getLocaleKey();
145        assertNotNull(localeKey);
146        Object value = context.get(localeKey);
147        assertNull(value);
148        context.put(localeKey, locale);
149        assertNotNull(context.get(localeKey));
150        assertNull(response.getLocale());
151        boolean result = command.execute(context);
152        assertFalse(result);
153        assertNotNull(response.getLocale());
154        assertEquals(locale, response.getLocale());
155    
156        }
157    
158    
159    }