alltube/tests/LocaleMiddlewareTest.php

144 lines
3.2 KiB
PHP
Raw Normal View History

2017-05-29 21:11:59 +02:00
<?php
2017-05-29 21:11:59 +02:00
/**
* LocaleMiddlewareTest class.
*/
namespace Alltube\Test;
use Alltube\Exception\ConfigException;
use Alltube\Exception\DependencyException;
2020-10-20 23:13:48 +02:00
use Alltube\Middleware\LocaleMiddleware;
2017-05-29 21:11:59 +02:00
use Slim\Http\Request;
use Slim\Http\Response;
use SmartyException;
2017-05-29 21:11:59 +02:00
/**
* Unit tests for the FrontController class.
*/
class LocaleMiddlewareTest extends ContainerTest
2017-05-29 21:11:59 +02:00
{
2017-05-30 23:49:38 +02:00
/**
* LocaleMiddleware instance.
*
* @var LocaleMiddleware
*/
private $middleware;
2017-05-29 22:00:30 +02:00
2017-05-29 21:11:59 +02:00
/**
* Prepare tests.
*
* @throws DependencyException
* @throws ConfigException
* @throws SmartyException
2017-05-29 21:11:59 +02:00
*/
2019-11-30 14:08:18 +01:00
protected function setUp(): void
2017-05-29 21:11:59 +02:00
{
parent::setUp();
$this->middleware = new LocaleMiddleware($this->container);
}
/**
* Unset locale cookie after each test.
*
* @return void
*/
2019-11-30 14:08:18 +01:00
protected function tearDown(): void
{
parent::tearDown();
$this->container->get('locale')->unsetLocale();
2017-05-29 21:11:59 +02:00
}
/**
* Test the testLocale() function.
*
* @return void
2017-11-11 22:48:11 +01:00
* @requires OS Linux
2017-05-29 21:11:59 +02:00
*/
public function testTestLocale()
{
$locale = [
2017-11-11 22:39:41 +01:00
'language' => 'en',
'region' => 'US',
2017-05-29 21:11:59 +02:00
];
2017-11-11 22:39:41 +01:00
$this->assertEquals('en_US', $this->middleware->testLocale($locale));
2017-05-29 21:11:59 +02:00
}
/**
* Test the testLocale() function with an unsupported locale.
*
* @return void
*/
public function testLocaleWithWrongLocale()
{
$locale = [
2017-10-29 23:21:13 +01:00
'language' => 'foo',
'region' => 'BAR',
2017-05-29 21:11:59 +02:00
];
$this->assertNull($this->middleware->testLocale($locale));
$this->assertNull($this->middleware->testLocale([]));
}
/**
* Check that the request contains an Accept-Language header.
*
* @param Request $request PSR-7 request
2020-12-17 22:43:05 +01:00
* @param Response $response
*
2020-12-17 22:43:05 +01:00
* @return Response
*/
2020-12-17 22:43:05 +01:00
public function assertHeader(Request $request, Response $response): Response
{
$header = $request->getHeader('Accept-Language');
$this->assertEquals('foo-BAR', $header[0]);
2020-12-17 22:43:05 +01:00
return $response;
}
/**
* Check that the request contains no Accept-Language header.
*
* @param Request $request PSR-7 request
2020-12-17 22:43:05 +01:00
* @param Response $response
*
2020-12-17 22:43:05 +01:00
* @return Response
*/
2020-12-17 22:43:05 +01:00
public function assertNoHeader(Request $request, Response $response): Response
{
$header = $request->getHeader('Accept-Language');
$this->assertEmpty($header);
2020-12-17 22:43:05 +01:00
return $response;
}
2017-05-29 21:11:59 +02:00
/**
* Test the __invoke() function.
*
* @return void
*/
public function testInvoke()
{
$this->middleware->__invoke(
$this->container->get('request')->withHeader('Accept-Language', 'foo-BAR'),
2017-05-29 21:11:59 +02:00
new Response(),
[$this, 'assertHeader']
2017-05-29 21:11:59 +02:00
);
}
2017-05-30 23:41:26 +02:00
/**
* Test the __invoke() function without the Accept-Language header.
2017-05-30 23:41:26 +02:00
*
* @return void
*/
public function testInvokeWithoutHeader()
{
$this->middleware->__invoke(
$this->container->get('request')->withoutHeader('Accept-Language'),
2017-05-30 23:41:26 +02:00
new Response(),
[$this, 'assertNoHeader']
2017-05-30 23:41:26 +02:00
);
}
2017-05-29 21:11:59 +02:00
}