diff --git a/tests/TestCase/Routing/Filter/LocaleSelectorFilterTest.php b/tests/TestCase/Routing/Filter/LocaleSelectorFilterTest.php index e27a073b972..2cdcb3ca8cb 100644 --- a/tests/TestCase/Routing/Filter/LocaleSelectorFilterTest.php +++ b/tests/TestCase/Routing/Filter/LocaleSelectorFilterTest.php @@ -25,11 +25,21 @@ */ class LocaleSelectorFilterTest extends TestCase { +/** + * Resets the default locale + * + * @return void + */ public function tearDown() { parent::tearDown(); Locale::setDefault(''); } +/** + * Tests selecting a language from a http header + * + * @return void + */ public function testSimpleSelection() { $filter = new LocaleSelectorFilter(); $request = new Request([ @@ -51,4 +61,31 @@ public function testSimpleSelection() { $this->assertEquals('da', Locale::getDefault()); } +/** + * Tests selecting a language from a http header and filtering by a whitelist + * + * @return void + */ + public function testWithWhitelist() { + $filter = new LocaleSelectorFilter([ + 'locales' => ['en_CA', 'en_IN', 'es_VE'] + ]); + $request = new Request([ + 'environment' => [ + 'HTTP_ACCEPT_LANGUAGE' => 'en-GB;q=0.8,es-VE;q=0.9,da-DK;q=0.4' + ] + ]); + $filter->beforeDispatch(new Event('name', null, ['request' => $request])); + $this->assertEquals('es_VE', Locale::getDefault()); + Locale::setDefault(''); + + $request = new Request([ + 'environment' => [ + 'HTTP_ACCEPT_LANGUAGE' => 'en-GB;q=0.8,es-ES;q=0.9,da-DK;q=0.4' + ] + ]); + $filter->beforeDispatch(new Event('name', null, ['request' => $request])); + $this->assertEquals('en_US', Locale::getDefault()); + } + }