From cf2247ffde19e83c647e0098b731f5200e771728 Mon Sep 17 00:00:00 2001 From: Alexandre Anzalone Date: Wed, 10 Oct 2018 22:06:53 +0200 Subject: [PATCH] adapt for symfony 4.1 i18n routes --- Resources/js/router.js | 33 ++++++++++++---- Resources/js/router.test.js | 17 +++++++- Resources/public/js/router.js | 39 +++++++++++++++---- Resources/public/js/router.min.js | 2 +- Response/RoutesResponse.php | 5 +++ .../Normalizer/RoutesResponseNormalizer.php | 1 + Tests/Controller/ControllerTest.php | 22 +++++------ .../RoutesResponseNormalizerTest.php | 5 +++ 8 files changed, 95 insertions(+), 29 deletions(-) diff --git a/Resources/js/router.js b/Resources/js/router.js index 388b6f0d..1119c557 100644 --- a/Resources/js/router.js +++ b/Resources/js/router.js @@ -19,7 +19,7 @@ class Router { * @param {Object.=} routes */ constructor(context, routes) { - this.context_ = context || {base_url: '', prefix: '', host: '', port: '', scheme: ''}; + this.context_ = context || {base_url: '', prefix: '', host: '', port: '', scheme: '', locale: ''}; this.setRoutes(routes || {}); } @@ -55,6 +55,9 @@ class Router { if ('port' in data) { this.setPort(data['port']); } + if ('locale' in data) { + this.setLocale(data['locale']); + } this.setHost(data['host']); this.setScheme(data['scheme']); @@ -137,6 +140,20 @@ class Router { return this.context_.port; }; + /** + * @param {string} locale + */ + setLocale(locale) { + this.context_.locale = locale; + } + + /** + * @return {string} + */ + getLocale() { + return this.context_.locale; + }; + /** * Builds query string params added to a URL. * Port of jQuery's $.param() function, so credit is due there. @@ -174,17 +191,17 @@ class Router { */ getRoute(name) { let prefixedName = this.context_.prefix + name; + let sf41i18nName = name + '.' + this.context_.locale; + let prefixedSf41i18nName = this.context_.prefix + name + '.' + this.context_.locale; + let variants = [prefixedName, sf41i18nName, prefixedSf41i18nName, name]; - if (!(prefixedName in this.routes_)) { - // Check first for default route before failing - if (!(name in this.routes_)) { - throw new Error('The route "' + name + '" does not exist.'); + for (let i in variants) { + if (variants[i] in this.routes_) { + return this.routes_[variants[i]]; } - } else { - name = prefixedName; } - return this.routes_[name]; + throw new Error('The route "' + name + '" does not exist.'); } /** diff --git a/Resources/js/router.test.js b/Resources/js/router.test.js index f4a25ae2..c16a4532 100644 --- a/Resources/js/router.test.js +++ b/Resources/js/router.test.js @@ -327,7 +327,7 @@ function testGetBaseUrl() { } function testGeti18n() { - var router = new fos.Router({base_url: '/foo', prefix: 'en__RG__'}, { + var router = new fos.Router({base_url: '/foo', prefix: 'en__RG__', locale: 'en'}, { en__RG__homepage: { tokens: [['text', '/bar']], defaults: {}, @@ -345,14 +345,29 @@ function testGeti18n() { defaults: {}, requirements: {}, hosttokens: [] + }, + "login.en": { + tokens: [['text', '/en/login']], + defaults: {}, + requirements: {}, + hosttokens: [] + }, + "login.es": { + tokens: [['text', '/es/login']], + defaults: {}, + requirements: {}, + hosttokens: [] } }); assertEquals('/foo/bar', router.generate('homepage')); assertEquals('/foo/admin', router.generate('_admin')); + assertEquals('/foo/en/login', router.generate('login')); router.setPrefix('es__RG__'); + router.setLocale('es'); assertEquals('/foo/es/bar', router.generate('homepage')); + assertEquals('/foo/es/login', router.generate('login')); } function testGetRoute() { diff --git a/Resources/public/js/router.js b/Resources/public/js/router.js index 5cd2efa5..fd3f95e5 100644 --- a/Resources/public/js/router.js +++ b/Resources/public/js/router.js @@ -48,7 +48,7 @@ var Router = function () { function Router(context, routes) { _classCallCheck(this, Router); - this.context_ = context || { base_url: '', prefix: '', host: '', port: '', scheme: '' }; + this.context_ = context || { base_url: '', prefix: '', host: '', port: '', scheme: '', locale: '' }; this.setRoutes(routes || {}); } @@ -76,6 +76,9 @@ var Router = function () { if ('port' in data) { this.setPort(data['port']); } + if ('locale' in data) { + this.setLocale(data['locale']); + } this.setHost(data['host']); this.setScheme(data['scheme']); @@ -190,6 +193,26 @@ var Router = function () { value: function getPort() { return this.context_.port; } + }, { + key: 'setLocale', + + + /** + * @param {string} locale + */ + value: function setLocale(locale) { + this.context_.locale = locale; + } + + /** + * @return {string} + */ + + }, { + key: 'getLocale', + value: function getLocale() { + return this.context_.locale; + } }, { key: 'buildQueryParams', @@ -236,17 +259,17 @@ var Router = function () { key: 'getRoute', value: function getRoute(name) { var prefixedName = this.context_.prefix + name; + var sf41i18nName = name + '.' + this.context_.locale; + var prefixedSf41i18nName = this.context_.prefix + name + '.' + this.context_.locale; + var variants = [prefixedName, sf41i18nName, prefixedSf41i18nName, name]; - if (!(prefixedName in this.routes_)) { - // Check first for default route before failing - if (!(name in this.routes_)) { - throw new Error('The route "' + name + '" does not exist.'); + for (var i in variants) { + if (variants[i] in this.routes_) { + return this.routes_[variants[i]]; } - } else { - name = prefixedName; } - return this.routes_[name]; + throw new Error('The route "' + name + '" does not exist.'); } /** diff --git a/Resources/public/js/router.min.js b/Resources/public/js/router.min.js index 6b8c4d58..84b8d420 100644 --- a/Resources/public/js/router.min.js +++ b/Resources/public/js/router.min.js @@ -1 +1 @@ -!function(e,t){var n=t();"function"==typeof define&&define.amd?define([],n.Routing):"object"==typeof module&&module.exports?module.exports=n.Routing:(e.Routing=n.Routing,e.fos={Router:n.Router})}(this,function(){"use strict";function e(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var t=Object.assign||function(e){for(var t=1;t2&&void 0!==arguments[2]&&arguments[2],r=this.getRoute(e),i=n||{},s=t({},i),u="",f=!0,a="",c="undefined"==typeof this.getPort()||null===this.getPort()?"":this.getPort();if(r.tokens.forEach(function(t){if("text"===t[0])return u=t[1]+u,void(f=!1);{if("variable"!==t[0])throw new Error('The token type "'+t[0]+'" is not supported.');var n=r.defaults&&t[3]in r.defaults;if(!1===f||!n||t[3]in i&&i[t[3]]!=r.defaults[t[3]]){var o=void 0;if(t[3]in i)o=i[t[3]],delete s[t[3]];else{if(!n){if(f)return;throw new Error('The route "'+e+'" requires the parameter "'+t[3]+'".')}o=r.defaults[t[3]]}var a=!0===o||!1===o||""===o;if(!a||!f){var c=encodeURIComponent(o).replace(/%2F/g,"/");"null"===c&&null===o&&(c=""),u=t[1]+c+u}f=!1}else n&&t[3]in s&&delete s[t[3]]}}),""===u&&(u="/"),r.hosttokens.forEach(function(e){var t=void 0;return"text"===e[0]?void(a=e[1]+a):void("variable"===e[0]&&(e[3]in i?(t=i[e[3]],delete s[e[3]]):r.defaults&&e[3]in r.defaults&&(t=r.defaults[e[3]]),a=e[1]+t+a))}),u=this.context_.base_url+u,r.requirements&&"_scheme"in r.requirements&&this.getScheme()!=r.requirements._scheme?u=r.requirements._scheme+"://"+(a||this.getHost())+u:"undefined"!=typeof r.schemes&&"undefined"!=typeof r.schemes[0]&&this.getScheme()!==r.schemes[0]?u=r.schemes[0]+"://"+(a||this.getHost())+u:a&&this.getHost()!==a+(""===c?"":":"+c)?u=this.getScheme()+"://"+a+(""===c?"":":"+c)+u:o===!0&&(u=this.getScheme()+"://"+this.getHost()+u),Object.keys(s).length>0){var h=void 0,l=[],y=function(e,t){t="function"==typeof t?t():t,t=null===t?"":t,l.push(encodeURIComponent(e)+"="+encodeURIComponent(t))};for(h in s)this.buildQueryParams(h,s[h],y);u=u+"?"+l.join("&").replace(/%20/g,"+")}return u}}],[{key:"getInstance",value:function(){return i}},{key:"setData",value:function(e){var t=r.getInstance();t.setRoutingData(e)}}]),r}();r.Route,r.Context;var i=new r;return{Router:r,Routing:i}}); \ No newline at end of file +!function(e,t){var n=t();"function"==typeof define&&define.amd?define([],n.Routing):"object"==typeof module&&module.exports?module.exports=n.Routing:(e.Routing=n.Routing,e.fos={Router:n.Router})}(this,function(){"use strict";function e(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var t=Object.assign||function(e){for(var t=1;t2&&void 0!==arguments[2]&&arguments[2],i=this.getRoute(e),r=n||{},s=t({},r),u="",c=!0,a="",f="undefined"==typeof this.getPort()||null===this.getPort()?"":this.getPort();if(i.tokens.forEach(function(t){if("text"===t[0])return u=t[1]+u,void(c=!1);{if("variable"!==t[0])throw new Error('The token type "'+t[0]+'" is not supported.');var n=i.defaults&&t[3]in i.defaults;if(!1===c||!n||t[3]in r&&r[t[3]]!=i.defaults[t[3]]){var o=void 0;if(t[3]in r)o=r[t[3]],delete s[t[3]];else{if(!n){if(c)return;throw new Error('The route "'+e+'" requires the parameter "'+t[3]+'".')}o=i.defaults[t[3]]}var a=!0===o||!1===o||""===o;if(!a||!c){var f=encodeURIComponent(o).replace(/%2F/g,"/");"null"===f&&null===o&&(f=""),u=t[1]+f+u}c=!1}else n&&t[3]in s&&delete s[t[3]]}}),""===u&&(u="/"),i.hosttokens.forEach(function(e){var t=void 0;return"text"===e[0]?void(a=e[1]+a):void("variable"===e[0]&&(e[3]in r?(t=r[e[3]],delete s[e[3]]):i.defaults&&e[3]in i.defaults&&(t=i.defaults[e[3]]),a=e[1]+t+a))}),u=this.context_.base_url+u,i.requirements&&"_scheme"in i.requirements&&this.getScheme()!=i.requirements._scheme?u=i.requirements._scheme+"://"+(a||this.getHost())+u:"undefined"!=typeof i.schemes&&"undefined"!=typeof i.schemes[0]&&this.getScheme()!==i.schemes[0]?u=i.schemes[0]+"://"+(a||this.getHost())+u:a&&this.getHost()!==a+(""===f?"":":"+f)?u=this.getScheme()+"://"+a+(""===f?"":":"+f)+u:o===!0&&(u=this.getScheme()+"://"+this.getHost()+u),Object.keys(s).length>0){var l=void 0,h=[],y=function(e,t){t="function"==typeof t?t():t,t=null===t?"":t,h.push(encodeURIComponent(e)+"="+encodeURIComponent(t))};for(l in s)this.buildQueryParams(l,s[l],y);u=u+"?"+h.join("&").replace(/%20/g,"+")}return u}}],[{key:"getInstance",value:function(){return r}},{key:"setData",value:function(e){var t=i.getInstance();t.setRoutingData(e)}}]),i}();i.Route,i.Context;var r=new i;return{Router:i,Routing:r}}); \ No newline at end of file diff --git a/Response/RoutesResponse.php b/Response/RoutesResponse.php index 1f9e7564..1e06bd8d 100644 --- a/Response/RoutesResponse.php +++ b/Response/RoutesResponse.php @@ -105,4 +105,9 @@ public function getScheme() { return $this->scheme; } + + public function getLocale() + { + return $this->locale; + } } diff --git a/Serializer/Normalizer/RoutesResponseNormalizer.php b/Serializer/Normalizer/RoutesResponseNormalizer.php index 74281903..da178dbf 100644 --- a/Serializer/Normalizer/RoutesResponseNormalizer.php +++ b/Serializer/Normalizer/RoutesResponseNormalizer.php @@ -31,6 +31,7 @@ public function normalize($data, $format = null, array $context = array()) 'host' => $data->getHost(), 'port' => $data->getPort(), 'scheme' => $data->getScheme(), + 'locale' => $data->getLocale(), ); } diff --git a/Tests/Controller/ControllerTest.php b/Tests/Controller/ControllerTest.php index 50ebd495..811832a6 100644 --- a/Tests/Controller/ControllerTest.php +++ b/Tests/Controller/ControllerTest.php @@ -49,7 +49,7 @@ public function testIndexAction() $response = $controller->indexAction($this->getRequest('/'), 'json'); - $this->assertEquals('{"base_url":"","routes":{"literal":{"tokens":[["text","\/homepage"]],"defaults":[],"requirements":[],"hosttokens":[],"methods":[],"schemes":[]},"blog":{"tokens":[["variable","\/","[^\/]++","slug"],["text","\/blog-post"]],"defaults":[],"requirements":[],"hosttokens":[["text","localhost"]],"methods":[],"schemes":[]}},"prefix":"","host":"","port":null,"scheme":""}', $response->getContent()); + $this->assertEquals('{"base_url":"","routes":{"literal":{"tokens":[["text","\/homepage"]],"defaults":[],"requirements":[],"hosttokens":[],"methods":[],"schemes":[]},"blog":{"tokens":[["variable","\/","[^\/]++","slug"],["text","\/blog-post"]],"defaults":[],"requirements":[],"hosttokens":[["text","localhost"]],"methods":[],"schemes":[]}},"prefix":"","host":"","port":null,"scheme":"","locale":"en"}', $response->getContent()); } public function testIndexActionWithLocalizedRoutes() @@ -65,7 +65,7 @@ public function testIndexActionWithLocalizedRoutes() $response = $controller->indexAction($this->getRequest('/'), 'json'); - $this->assertEquals('{"base_url":"","routes":{"literal":{"tokens":[["text","\/homepage"]],"defaults":[],"requirements":[],"hosttokens":[],"methods":[],"schemes":[]},"blog":{"tokens":[["variable","\/","[^\/]++","_locale"],["variable","\/","[^\/]++","slug"],["text","\/blog-post"]],"defaults":{"_locale":"en"},"requirements":[],"hosttokens":[["text","localhost"]],"methods":[],"schemes":[]}},"prefix":"","host":"","port":null,"scheme":""}', $response->getContent()); + $this->assertEquals('{"base_url":"","routes":{"literal":{"tokens":[["text","\/homepage"]],"defaults":[],"requirements":[],"hosttokens":[],"methods":[],"schemes":[]},"blog":{"tokens":[["variable","\/","[^\/]++","_locale"],["variable","\/","[^\/]++","slug"],["text","\/blog-post"]],"defaults":{"_locale":"en"},"requirements":[],"hosttokens":[["text","localhost"]],"methods":[],"schemes":[]}},"prefix":"","host":"","port":null,"scheme":"","locale":"en"}', $response->getContent()); } public function testConfigCache() @@ -79,11 +79,11 @@ public function testConfigCache() ); $response = $controller->indexAction($this->getRequest('/'), 'json'); - $this->assertEquals('{"base_url":"","routes":{"literal":{"tokens":[["text","\/homepage"]],"defaults":[],"requirements":[],"hosttokens":[],"methods":[],"schemes":[]}},"prefix":"","host":"","port":null,"scheme":""}', $response->getContent()); + $this->assertEquals('{"base_url":"","routes":{"literal":{"tokens":[["text","\/homepage"]],"defaults":[],"requirements":[],"hosttokens":[],"methods":[],"schemes":[]}},"prefix":"","host":"","port":null,"scheme":"","locale":"en"}', $response->getContent()); // second call should serve the cached content $response = $controller->indexAction($this->getRequest('/'), 'json'); - $this->assertEquals('{"base_url":"","routes":{"literal":{"tokens":[["text","\/homepage"]],"defaults":[],"requirements":[],"hosttokens":[],"methods":[],"schemes":[]}},"prefix":"","host":"","port":null,"scheme":""}', $response->getContent()); + $this->assertEquals('{"base_url":"","routes":{"literal":{"tokens":[["text","\/homepage"]],"defaults":[],"requirements":[],"hosttokens":[],"methods":[],"schemes":[]}},"prefix":"","host":"","port":null,"scheme":"","locale":"en"}', $response->getContent()); } /** @@ -95,7 +95,7 @@ public function testGenerateWithCallback($callback) $response = $controller->indexAction($this->getRequest('/', 'GET', array('callback' => $callback)), 'json'); $this->assertEquals( - sprintf('/**/%s({"base_url":"","routes":[],"prefix":"","host":"","port":null,"scheme":""});', $callback), + sprintf('/**/%s({"base_url":"","routes":[],"prefix":"","host":"","port":null,"scheme":"","locale":"en"});', $callback), $response->getContent() ); } @@ -122,7 +122,7 @@ public function testIndexActionWithoutRoutes() $controller = new Controller($this->getSerializer(), $this->getExtractor(), array(), sys_get_temp_dir()); $response = $controller->indexAction($this->getRequest('/'), 'json'); - $this->assertEquals('{"base_url":"","routes":[],"prefix":"","host":"","port":null,"scheme":""}', $response->getContent()); + $this->assertEquals('{"base_url":"","routes":[],"prefix":"","host":"","port":null,"scheme":"","locale":"en"}', $response->getContent()); $this->assertEquals(200, $response->getStatusCode()); $this->assertEquals('application/json', $response->headers->get('Content-Type')); @@ -177,27 +177,27 @@ public function testExposeDomain() $response = $controller->indexAction($this->getRequest('/'), 'json'); - $this->assertEquals('{"base_url":"","routes":{"homepage":{"tokens":[["text","\/"]],"defaults":[],"requirements":[],"hosttokens":[],"methods":[],"schemes":[]}},"prefix":"","host":"","port":null,"scheme":""}', $response->getContent()); + $this->assertEquals('{"base_url":"","routes":{"homepage":{"tokens":[["text","\/"]],"defaults":[],"requirements":[],"hosttokens":[],"methods":[],"schemes":[]}},"prefix":"","host":"","port":null,"scheme":"","locale":"en"}', $response->getContent()); $response = $controller->indexAction($this->getRequest('/', 'GET', array('domain' => 'admin')), 'json'); - $this->assertEquals('{"base_url":"","routes":{"admin_index":{"tokens":[["text","\/admin"]],"defaults":[],"requirements":[],"hosttokens":[],"methods":[],"schemes":[]},"admin_pages":{"tokens":[["text","\/admin\/path"]],"defaults":[],"requirements":[],"hosttokens":[],"methods":[],"schemes":[]}},"prefix":"","host":"","port":null,"scheme":""}', $response->getContent()); + $this->assertEquals('{"base_url":"","routes":{"admin_index":{"tokens":[["text","\/admin"]],"defaults":[],"requirements":[],"hosttokens":[],"methods":[],"schemes":[]},"admin_pages":{"tokens":[["text","\/admin\/path"]],"defaults":[],"requirements":[],"hosttokens":[],"methods":[],"schemes":[]}},"prefix":"","host":"","port":null,"scheme":"","locale":"en"}', $response->getContent()); $response = $controller->indexAction($this->getRequest('/', 'GET', array('domain' => 'blog')), 'json'); - $this->assertEquals('{"base_url":"","routes":{"blog_index":{"tokens":[["text","\/blog"]],"defaults":[],"requirements":[],"hosttokens":[["text","localhost"]],"methods":[],"schemes":[]},"blog_post":{"tokens":[["variable","\/","[^\/]++","slug"],["text","\/blog"]],"defaults":[],"requirements":[],"hosttokens":[["text","localhost"]],"methods":[],"schemes":[]}},"prefix":"","host":"","port":null,"scheme":""}', $response->getContent()); + $this->assertEquals('{"base_url":"","routes":{"blog_index":{"tokens":[["text","\/blog"]],"defaults":[],"requirements":[],"hosttokens":[["text","localhost"]],"methods":[],"schemes":[]},"blog_post":{"tokens":[["variable","\/","[^\/]++","slug"],["text","\/blog"]],"defaults":[],"requirements":[],"hosttokens":[["text","localhost"]],"methods":[],"schemes":[]}},"prefix":"","host":"","port":null,"scheme":"","locale":"en"}', $response->getContent()); $response = $controller->indexAction($this->getRequest('/', 'GET', array('domain' => 'admin,blog')), 'json'); - $this->assertEquals('{"base_url":"","routes":{"admin_index":{"tokens":[["text","\/admin"]],"defaults":[],"requirements":[],"hosttokens":[],"methods":[],"schemes":[]},"admin_pages":{"tokens":[["text","\/admin\/path"]],"defaults":[],"requirements":[],"hosttokens":[],"methods":[],"schemes":[]},"blog_index":{"tokens":[["text","\/blog"]],"defaults":[],"requirements":[],"hosttokens":[["text","localhost"]],"methods":[],"schemes":[]},"blog_post":{"tokens":[["variable","\/","[^\/]++","slug"],["text","\/blog"]],"defaults":[],"requirements":[],"hosttokens":[["text","localhost"]],"methods":[],"schemes":[]}},"prefix":"","host":"","port":null,"scheme":""}', $response->getContent()); + $this->assertEquals('{"base_url":"","routes":{"admin_index":{"tokens":[["text","\/admin"]],"defaults":[],"requirements":[],"hosttokens":[],"methods":[],"schemes":[]},"admin_pages":{"tokens":[["text","\/admin\/path"]],"defaults":[],"requirements":[],"hosttokens":[],"methods":[],"schemes":[]},"blog_index":{"tokens":[["text","\/blog"]],"defaults":[],"requirements":[],"hosttokens":[["text","localhost"]],"methods":[],"schemes":[]},"blog_post":{"tokens":[["variable","\/","[^\/]++","slug"],["text","\/blog"]],"defaults":[],"requirements":[],"hosttokens":[["text","localhost"]],"methods":[],"schemes":[]}},"prefix":"","host":"","port":null,"scheme":"","locale":"en"}', $response->getContent()); $response = $controller->indexAction($this->getRequest('/', 'GET', array('domain' => 'default,admin,blog')), 'json'); - $this->assertEquals('{"base_url":"","routes":{"homepage":{"tokens":[["text","\/"]],"defaults":[],"requirements":[],"hosttokens":[],"methods":[],"schemes":[]},"admin_index":{"tokens":[["text","\/admin"]],"defaults":[],"requirements":[],"hosttokens":[],"methods":[],"schemes":[]},"admin_pages":{"tokens":[["text","\/admin\/path"]],"defaults":[],"requirements":[],"hosttokens":[],"methods":[],"schemes":[]},"blog_index":{"tokens":[["text","\/blog"]],"defaults":[],"requirements":[],"hosttokens":[["text","localhost"]],"methods":[],"schemes":[]},"blog_post":{"tokens":[["variable","\/","[^\/]++","slug"],["text","\/blog"]],"defaults":[],"requirements":[],"hosttokens":[["text","localhost"]],"methods":[],"schemes":[]}},"prefix":"","host":"","port":null,"scheme":""}', $response->getContent()); + $this->assertEquals('{"base_url":"","routes":{"homepage":{"tokens":[["text","\/"]],"defaults":[],"requirements":[],"hosttokens":[],"methods":[],"schemes":[]},"admin_index":{"tokens":[["text","\/admin"]],"defaults":[],"requirements":[],"hosttokens":[],"methods":[],"schemes":[]},"admin_pages":{"tokens":[["text","\/admin\/path"]],"defaults":[],"requirements":[],"hosttokens":[],"methods":[],"schemes":[]},"blog_index":{"tokens":[["text","\/blog"]],"defaults":[],"requirements":[],"hosttokens":[["text","localhost"]],"methods":[],"schemes":[]},"blog_post":{"tokens":[["variable","\/","[^\/]++","slug"],["text","\/blog"]],"defaults":[],"requirements":[],"hosttokens":[["text","localhost"]],"methods":[],"schemes":[]}},"prefix":"","host":"","port":null,"scheme":"","locale":"en"}', $response->getContent()); } private function getExtractor(RouteCollection $exposedRoutes = null, $baseUrl = '') diff --git a/Tests/Serializer/Normalizer/RoutesResponseNormalizerTest.php b/Tests/Serializer/Normalizer/RoutesResponseNormalizerTest.php index c7b69914..c73c7b75 100644 --- a/Tests/Serializer/Normalizer/RoutesResponseNormalizerTest.php +++ b/Tests/Serializer/Normalizer/RoutesResponseNormalizerTest.php @@ -55,6 +55,10 @@ public function testNormalize() ->method('getScheme') ->will($this->returnValue('scheme')); + $response->expects($this->once()) + ->method('getLocale') + ->will($this->returnValue('locale')); + $expected = array( 'base_url' => 'baseUrl', 'routes' => array(), @@ -62,6 +66,7 @@ public function testNormalize() 'host' => 'host', 'port' => null, 'scheme' => 'scheme', + 'locale' => 'locale', ); $this->assertSame($expected, $normalizer->normalize($response));