origlocale = getenv('LANG'); $container = new Container(); $container['locale'] = new LocaleManager(); $this->middleware = new LocaleMiddleware($container); } /** * Restore environment after the tests. * * @return void */ protected function tearDown() { putenv('LANG='.$this->origlocale); setlocale(LC_ALL, $this->origlocale); } /** * Test the testLocale() function. * * @return void */ public function testTestLocale() { $locale = [ 'language'=> 'fr', 'region' => 'FR', ]; $this->assertEquals('fr_FR', $this->middleware->testLocale($locale)); } /** * Test the testLocale() function with an unsupported locale. * * @return void */ public function testLocaleWithWrongLocale() { $locale = [ 'language'=> 'foo', 'region' => 'BAR', ]; $this->assertNull($this->middleware->testLocale($locale)); $this->assertNull($this->middleware->testLocale([])); } /** * Test the __invoke() function. * * @return void */ public function testInvoke() { $request = Request::createFromEnvironment(Environment::mock()); $this->middleware->__invoke( $request->withHeader('Accept-Language', 'fr-FR'), new Response(), function () { } ); $this->assertEquals('fr_FR', getenv('LANG')); $this->assertEquals('fr_FR', setlocale(LC_ALL, null)); } /** * Test the __invoke() function withot the Accept-Language header. * * @return void */ public function testInvokeWithoutHeader() { $request = Request::createFromEnvironment(Environment::mock()); $this->middleware->__invoke( $request->withoutHeader('Accept-Language'), new Response(), function () { } ); $this->assertEquals('en_US', getenv('LANG')); $this->assertEquals('en_US', setlocale(LC_ALL, null)); } }