1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one or more
3    * contributor license agreements.  See the NOTICE file distributed with
4    * this work for additional information regarding copyright ownership.
5    * The ASF licenses this file to You under the Apache License, Version 2.0
6    * (the "License"); you may not use this file except in compliance with
7    * the License.  You may obtain a copy of the License at
8    *
9    *     http://www.apache.org/licenses/LICENSE-2.0
10   *
11   * Unless required by applicable law or agreed to in writing, software
12   * distributed under the License is distributed on an "AS IS" BASIS,
13   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14   * See the License for the specific language governing permissions and
15   * limitations under the License.
16   */
17  package org.apache.commons.chain.web.servlet;
18  
19  
20  import junit.framework.Test;
21  import junit.framework.TestCase;
22  import junit.framework.TestSuite;
23  import org.apache.commons.chain.Context;
24  
25  import javax.servlet.ServletContext;
26  import javax.servlet.http.HttpServletRequest;
27  import javax.servlet.http.HttpServletResponse;
28  import javax.servlet.http.HttpSession;
29  import java.util.Locale;
30  
31  
32  // Test case for org.apache.commons.chain.web.servlet.ServletGetLocaleCommand
33  
34  public class ServletGetLocaleCommandTestCase extends TestCase {
35  
36  
37      // ---------------------------------------------------------- Constructors
38  
39      /**
40       * Construct a new instance of this test case.
41       *
42       * @param name Name of the test case
43       */
44      public ServletGetLocaleCommandTestCase(String name) {
45          super(name);
46      }
47  
48  
49      // ----------------------------------------------------- Instance Variables
50  
51  
52      protected Locale locale = null;
53  
54      // Servlet API Objects
55      protected ServletContext scontext = null;
56      protected HttpServletRequest request = null;
57      protected HttpServletResponse response = null;
58      protected HttpSession session = null;
59  
60      // Chain API Objects
61      protected Context context = null;
62      protected ServletGetLocaleCommand command = null;
63  
64  
65      // -------------------------------------------------- Overall Test Methods
66  
67  
68      /**
69       * Set up instance variables required by this test case.
70       */
71      public void setUp() {
72  
73      locale = new Locale("en", "US");
74  
75      // Set up Servlet API Objects
76          scontext = new MockServletContext();
77          session = new MockHttpSession(scontext);
78          request = new MockHttpServletRequest("/context", "/servlet",
79                                               "/path/info", "a=b&c=d",
80                                               session);
81      ((MockHttpServletRequest) request).setLocale(locale);
82          response = new MockHttpServletResponse();
83  
84      // Set up Chain API Objects
85          context = new ServletWebContext(scontext, request, response);
86      command = new ServletGetLocaleCommand();
87  
88      }
89  
90  
91      /**
92       * Return the tests included in this test suite.
93       */
94      public static Test suite() {
95  
96          return (new TestSuite(ServletGetLocaleCommandTestCase.class));
97  
98      }
99  
100 
101     /**
102      * Tear down instance variables required by this test case.
103      */
104     public void tearDown() {
105 
106         scontext = null;
107         session = null;
108         request = null;
109         response = null;
110 
111         context = null;
112     command = null;
113 
114     }
115 
116 
117     // ------------------------------------------------- Individual Test Methods
118 
119 
120     // Test configured behavior
121     public void testConfigured() throws Exception {
122 
123     command.setLocaleKey("special");
124     assertEquals("special", command.getLocaleKey());
125     check(context, command);
126 
127     }
128 
129 
130     // Test default behavior
131     public void testDefaut() throws Exception {
132 
133     assertEquals("locale", command.getLocaleKey());
134     check(context, command);
135 
136     }
137 
138 
139     // --------------------------------------------------------- Support Methods
140 
141 
142     protected void check(Context context, ServletGetLocaleCommand command)
143     throws Exception {
144 
145     String localeKey = command.getLocaleKey();
146     assertNotNull(localeKey);
147     Object value = context.get(localeKey);
148     assertNull(value);
149     boolean result = command.execute(context);
150     assertFalse(result);
151     value = context.get(localeKey);
152     assertNotNull(value);
153     assertTrue(value instanceof Locale);
154     assertEquals(locale, (Locale) value);
155 
156     }
157 
158 
159 }