1   /*
2    * Copyright 1999-2004 The Apache Software Foundation
3    *
4    * Licensed under the Apache License, Version 2.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    *
8    *     http://www.apache.org/licenses/LICENSE-2.0
9    *
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   * See the License for the specific language governing permissions and
14   * limitations under the License.
15   */
16  package org.apache.commons.chain.web.servlet;
17  
18  
19  import junit.framework.Test;
20  import junit.framework.TestCase;
21  import junit.framework.TestSuite;
22  import org.apache.commons.chain.Context;
23  
24  import javax.servlet.ServletContext;
25  import javax.servlet.http.HttpServletRequest;
26  import javax.servlet.http.HttpServletResponse;
27  import javax.servlet.http.HttpSession;
28  import java.util.Locale;
29  
30  
31  // Test case for org.apache.commons.chain.web.servlet.ServletGetLocaleCommand
32  
33  public class ServletGetLocaleCommandTestCase extends TestCase {
34  
35  
36      // ---------------------------------------------------------- Constructors
37  
38      /***
39       * Construct a new instance of this test case.
40       *
41       * @param name Name of the test case
42       */
43      public ServletGetLocaleCommandTestCase(String name) {
44          super(name);
45      }
46  
47  
48      // ----------------------------------------------------- Instance Variables
49  
50  
51      protected Locale locale = null;
52  
53      // Servlet API Objects
54      protected ServletContext scontext = null;
55      protected HttpServletRequest request = null;
56      protected HttpServletResponse response = null;
57      protected HttpSession session = null;
58  
59      // Chain API Objects
60      protected Context context = null;
61      protected ServletGetLocaleCommand command = null;
62  
63  
64      // -------------------------------------------------- Overall Test Methods
65  
66  
67      /***
68       * Set up instance variables required by this test case.
69       */
70      public void setUp() {
71  
72      locale = new Locale("en", "US");
73  
74      // Set up Servlet API Objects
75          scontext = new MockServletContext();
76          session = new MockHttpSession(scontext);
77          request = new MockHttpServletRequest("/context", "/servlet",
78                                               "/path/info", "a=b&c=d",
79                                               session);
80      ((MockHttpServletRequest) request).setLocale(locale);
81          response = new MockHttpServletResponse();
82  
83      // Set up Chain API Objects
84          context = new ServletWebContext(scontext, request, response);
85      command = new ServletGetLocaleCommand();
86  
87      }
88  
89  
90      /***
91       * Return the tests included in this test suite.
92       */
93      public static Test suite() {
94  
95          return (new TestSuite(ServletGetLocaleCommandTestCase.class));
96  
97      }
98  
99  
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     boolean result = command.execute(context);
149     assertFalse(result);
150     value = context.get(localeKey);
151     assertNotNull(value);
152     assertTrue(value instanceof Locale);
153     assertEquals(locale, (Locale) value);
154 
155     }
156 
157 
158 }