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.ServletGetLocaleCommand 033 034 public class ServletGetLocaleCommandTestCase 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 ServletGetLocaleCommandTestCase(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 ((MockHttpServletRequest) request).setLocale(locale); 082 response = new MockHttpServletResponse(); 083 084 // Set up Chain API Objects 085 context = new ServletWebContext(scontext, request, response); 086 command = new ServletGetLocaleCommand(); 087 088 } 089 090 091 /** 092 * Return the tests included in this test suite. 093 */ 094 public static Test suite() { 095 096 return (new TestSuite(ServletGetLocaleCommandTestCase.class)); 097 098 } 099 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 }