WICKET-6153 WicketTester's MockHttpServletRequest doesn't expose 
setLocale(aLocale) method


Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/41705d80
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/41705d80
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/41705d80

Branch: refs/heads/WICKET-6183
Commit: 41705d8011e4dfc94f9da9962665b03cfe56b3bb
Parents: c1ea238
Author: Martin Tzvetanov Grigorov <[email protected]>
Authored: Sat May 21 14:45:58 2016 +0200
Committer: Andrea Del Bene <[email protected]>
Committed: Fri May 27 13:12:16 2016 +0200

----------------------------------------------------------------------
 .../main/java/org/apache/wicket/Session.java    |  2 +-
 .../http/mock/MockHttpServletRequest.java       | 14 +++++++++++---
 .../wicket/util/tester/BaseWicketTester.java    |  2 +-
 .../http/mock/MockHttpServletRequestTest.java   | 20 +++++++++++++++-----
 4 files changed, 28 insertions(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/41705d80/wicket-core/src/main/java/org/apache/wicket/Session.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/Session.java 
b/wicket-core/src/main/java/org/apache/wicket/Session.java
index f194b98..d18a644 100644
--- a/wicket-core/src/main/java/org/apache/wicket/Session.java
+++ b/wicket-core/src/main/java/org/apache/wicket/Session.java
@@ -488,7 +488,7 @@ public abstract class Session implements IClusterable, 
IEventSink
         */
        private void destroy()
        {
-               if (sessionStore != null)
+               if (getSessionStore() != null)
                {
                        
sessionStore.invalidate(RequestCycle.get().getRequest());
                        sessionStore = null;

http://git-wip-us.apache.org/repos/asf/wicket/blob/41705d80/wicket-core/src/main/java/org/apache/wicket/protocol/http/mock/MockHttpServletRequest.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/protocol/http/mock/MockHttpServletRequest.java
 
b/wicket-core/src/main/java/org/apache/wicket/protocol/http/mock/MockHttpServletRequest.java
index cf8087d..a7bd476 100755
--- 
a/wicket-core/src/main/java/org/apache/wicket/protocol/http/mock/MockHttpServletRequest.java
+++ 
b/wicket-core/src/main/java/org/apache/wicket/protocol/http/mock/MockHttpServletRequest.java
@@ -323,7 +323,7 @@ public class MockHttpServletRequest implements 
HttpServletRequest
                List<String> list = (List<String>)headers.get(name);
                if (list == null)
                {
-                       list = new ArrayList<String>(1);
+                       list = new ArrayList<>(1);
                        headers.put(name, list);
                }
                list.clear();
@@ -635,6 +635,10 @@ public class MockHttpServletRequest implements 
HttpServletRequest
                return getLocales().nextElement();
        }
 
+       public void setLocale(Locale locale) {
+               setHeader("Accept-Language", locale.getLanguage() + '-' + 
locale.getCountry());
+       }
+
        /**
         * 
         * @param value
@@ -668,10 +672,14 @@ public class MockHttpServletRequest implements 
HttpServletRequest
        @Override
        public Enumeration<Locale> getLocales()
        {
-               List<Locale> list = new ArrayList<Locale>();
-               final String header = getHeader("Accept-Language");
+               List<Locale> list = new ArrayList<>();
+               String header = getHeader("Accept-Language");
                if (header != null)
                {
+                       int idxOfSemicolon = header.indexOf(';');
+                       if (idxOfSemicolon > -1) {
+                               header = header.substring(0 , idxOfSemicolon);
+                       }
                        final String[] locales = Strings.split(header, ',');
                        for (String value : locales)
                        {

http://git-wip-us.apache.org/repos/asf/wicket/blob/41705d80/wicket-core/src/main/java/org/apache/wicket/util/tester/BaseWicketTester.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/util/tester/BaseWicketTester.java 
b/wicket-core/src/main/java/org/apache/wicket/util/tester/BaseWicketTester.java
index 3cbe313..eabe75e 100644
--- 
a/wicket-core/src/main/java/org/apache/wicket/util/tester/BaseWicketTester.java
+++ 
b/wicket-core/src/main/java/org/apache/wicket/util/tester/BaseWicketTester.java
@@ -483,7 +483,7 @@ public class BaseWicketTester
 
        /**
         * Cleans up feedback messages. This usually happens on detach, but is 
disabled in unit testing
-        * so feedback mesasges can be examined.
+        * so feedback messages can be examined.
         */
        public void cleanupFeedbackMessages()
        {

http://git-wip-us.apache.org/repos/asf/wicket/blob/41705d80/wicket-core/src/test/java/org/apache/wicket/protocol/http/mock/MockHttpServletRequestTest.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/test/java/org/apache/wicket/protocol/http/mock/MockHttpServletRequestTest.java
 
b/wicket-core/src/test/java/org/apache/wicket/protocol/http/mock/MockHttpServletRequestTest.java
index 004ea9b..99f956e 100755
--- 
a/wicket-core/src/test/java/org/apache/wicket/protocol/http/mock/MockHttpServletRequestTest.java
+++ 
b/wicket-core/src/test/java/org/apache/wicket/protocol/http/mock/MockHttpServletRequestTest.java
@@ -17,15 +17,18 @@
 package org.apache.wicket.protocol.http.mock;
 
 import java.util.Enumeration;
+import java.util.Locale;
 
 import javax.servlet.http.HttpSession;
 
+import org.apache.wicket.Session;
 import org.apache.wicket.request.Url;
 import org.apache.wicket.util.tester.WicketTestCase;
-import org.apache.wicket.util.tester.WicketTester;
 import org.junit.Test;
 import org.mockito.Mockito;
 
+import static org.hamcrest.Matchers.is;
+
 /**
  * test features of {@link MockHttpServletRequest}
  */
@@ -34,7 +37,6 @@ public class MockHttpServletRequestTest extends WicketTestCase
        @Test
        public void setAbsoluteUrlWithHost()
        {
-               WicketTester tester = new WicketTester();
                MockHttpServletRequest request = tester.getRequest();
                assertEquals("http", request.getScheme());
                assertEquals("localhost", request.getServerName());
@@ -59,7 +61,6 @@ public class MockHttpServletRequestTest extends WicketTestCase
        @Test
        public void setAbsoluteUrlWithoutHost()
        {
-               WicketTester tester = new WicketTester();
                MockHttpServletRequest request = tester.getRequest();
                assertEquals("http", request.getScheme());
                assertEquals("localhost", request.getServerName());
@@ -84,7 +85,6 @@ public class MockHttpServletRequestTest extends WicketTestCase
        @Test
        public void setRelativeUrl()
        {
-               WicketTester tester = new WicketTester();
                MockHttpServletRequest request = tester.getRequest();
                assertEquals("http", request.getScheme());
                assertEquals("localhost", request.getServerName());
@@ -112,7 +112,6 @@ public class MockHttpServletRequestTest extends 
WicketTestCase
     @Test
     public void testNoQueryString_returnsNull()
     {
-        WicketTester tester = new WicketTester();
         MockHttpServletRequest request = tester.getRequest();
         request.setURL("my/servlet/without/query/param");
         
@@ -176,4 +175,15 @@ public class MockHttpServletRequestTest extends 
WicketTestCase
                assertEquals("completelyNewValue", headers.nextElement());
                assertFalse(headers.hasMoreElements());
        }
+
+       @Test
+       public void setLocale() {
+               Session session = tester.getSession();
+               session.setLocale(Locale.US);
+               tester.getRequest().setLocale(Locale.CANADA_FRENCH);
+
+               session.invalidateNow();
+
+               assertThat(tester.getSession().getLocale(), 
is(Locale.CANADA_FRENCH));
+       }
 }

Reply via email to