slovocast/app/tests/Handler/AsyncHandlerTest.php

40 lines
1.2 KiB
PHP

<?php
namespace Slovocast\Tests\Controller;
use Slovocast\Tests\TestCase;
use Slovocast\Handler\AsyncHandler;
use Psr\Http\Message\ResponseInterface as Response;
class AsyncHandlerTest extends TestCase
{
public function testHtmlAcceptHeader(): void
{
$asyncHtmlHandler = new class extends AsyncHandler {
public function handle(): Response
{
$template = "<ul>
{% for item in list %}
<li>{{ item }}</li>
{% endfor %}
</ul>";
return $this->prepareResponse([ 'list' => [ 1, 2, 3 ]], $template);
}
};
$app = $this->getAppInstance();
$app->get('/test', $asyncHtmlHandler);
$request = $this->createRequest('GET', '/test', [ 'Accept' => 'text/html' ]);
$response = $app->handle($request);
$this->assertStringContainsString('<li>1</li>', $response->getBody());
$request = $this->createRequest('GET', '/test', [ 'Accept' => 'application/json']);
$response = $app->handle($request);
$this->assertEquals('{"list":[1,2,3]}', $response->getBody());
}
}