/* * Copyright (c) 2001-2007, Inversoft Inc., All Rights Reserved * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, * either express or implied. See the License for the specific * language governing permissions and limitations under the License. */ package org.primeframework.mvc.locale; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import java.util.Locale; import org.easymock.EasyMock; import org.primeframework.mock.servlet.MockHttpServletRequest; import org.primeframework.mock.servlet.MockServletContext; import org.testng.annotations.Test; import static org.testng.Assert.*; /** * This tests the default locale store. * * @author Brian Pontarelli */ public class DefaultLocaleProviderTest { @Test public void system() { Locale.setDefault(Locale.FRENCH); DefaultLocaleProvider provider = new DefaultLocaleProvider(null); assertEquals(provider.get(), Locale.FRENCH); Locale.setDefault(Locale.US); } @Test public void fallBackViaMock() { Locale.setDefault(Locale.FRENCH); MockHttpServletRequest request = new MockHttpServletRequest("/", (MockServletContext) null); DefaultLocaleProvider provider = new DefaultLocaleProvider(request); assertEquals(provider.get(), Locale.FRENCH); Locale.setDefault(Locale.US); } @Test public void storeSession() { HttpSession session = EasyMock.createStrictMock(HttpSession.class); session.setAttribute(DefaultLocaleProvider.LOCALE_KEY, Locale.GERMANY); EasyMock.replay(session); HttpServletRequest request = EasyMock.createStrictMock(HttpServletRequest.class); EasyMock.expect(request.getSession(false)).andReturn(session); request.setAttribute("javax.servlet.jsp.jstl.fmt.locale", Locale.GERMANY); EasyMock.replay(request); DefaultLocaleProvider provider = new DefaultLocaleProvider(request); provider.set(Locale.GERMANY); EasyMock.verify(request, session); } @Test public void storeRequest() { HttpServletRequest request = EasyMock.createStrictMock(HttpServletRequest.class); EasyMock.expect(request.getSession(false)).andReturn(null); request.setAttribute(DefaultLocaleProvider.LOCALE_KEY, Locale.GERMANY); request.setAttribute("javax.servlet.jsp.jstl.fmt.locale", Locale.GERMANY); EasyMock.replay(request); DefaultLocaleProvider provider = new DefaultLocaleProvider(request); provider.set(Locale.GERMANY); EasyMock.verify(request); } @Test public void lookupSession() { HttpSession session = EasyMock.createStrictMock(HttpSession.class); EasyMock.expect(session.getAttribute(DefaultLocaleProvider.LOCALE_KEY)).andReturn(Locale.CANADA); EasyMock.replay(session); HttpServletRequest request = EasyMock.createStrictMock(HttpServletRequest.class); EasyMock.expect(request.getSession(false)).andReturn(session); request.setAttribute("javax.servlet.jsp.jstl.fmt.locale", Locale.CANADA); EasyMock.replay(request); DefaultLocaleProvider provider = new DefaultLocaleProvider(request); assertEquals(provider.get(), Locale.CANADA); EasyMock.verify(session); } @Test public void lookupRequest() { HttpServletRequest request = EasyMock.createStrictMock(HttpServletRequest.class); EasyMock.expect(request.getSession(false)).andReturn(null); EasyMock.expect(request.getAttribute(DefaultLocaleProvider.LOCALE_KEY)).andReturn(Locale.CANADA); request.setAttribute("javax.servlet.jsp.jstl.fmt.locale", Locale.CANADA); EasyMock.replay(request); DefaultLocaleProvider provider = new DefaultLocaleProvider(request); assertEquals(provider.get(), Locale.CANADA); EasyMock.verify(request); } @Test public void lookupClient() { HttpServletRequest request = EasyMock.createStrictMock(HttpServletRequest.class); EasyMock.expect(request.getSession(false)).andReturn(null); EasyMock.expect(request.getAttribute(DefaultLocaleProvider.LOCALE_KEY)).andReturn(null); EasyMock.expect(request.getLocale()).andReturn(Locale.CANADA); request.setAttribute("javax.servlet.jsp.jstl.fmt.locale", Locale.CANADA); EasyMock.replay(request); DefaultLocaleProvider provider = new DefaultLocaleProvider(request); assertEquals(provider.get(), Locale.CANADA); EasyMock.verify(request); } }