slovocast/app/tests/Controller/ControllerTest.php

57 lines
1.6 KiB
PHP

<?php
namespace Slovocast\Tests\Controller;
use Slovocast\Tests\TestCase;
use Slovocast\Controller\Controller;
use Psr\Http\Message\ResponseInterface as Response;
class ControllerTest extends TestCase
{
public function testHtmlInlineResponse(): void
{
$testController = new class extends Controller {
public function respond(): Response
{
return $this->renderInline(
'<p>{{ name }}</p>',
[ 'name' => 'Dave' ]
);
}
};
$app = $this->getAppInstance();
$app->get('/test', $testController);
$request = $this->createRequest('GET', '/test');
$response = $app->handle($request);
$this->assertEquals('<p>Dave</p>', $response->getBody());
}
public function testHtmlInlineResponseCodes(): void
{
$testController = new class extends Controller {
public function respond(): Response
{
$response = $this->renderInline(
'<p>{{ name }}</p>',
[ 'name' => 'Oh no!' ]
);
return $response->withStatus(400);
}
};
$app = $this->getAppInstance();
$app->get('/test', $testController);
$request = $this->createRequest('GET', '/test');
$response = $app->handle($request);
$this->assertEquals(400, $response->getStatusCode());
$this->assertEquals('<p>Oh no!</p>', $response->getBody());
$this->assertEquals('text/html', $response->getHeaderLine('Content-Type'));
}
}