71 lines
1.9 KiB
PHP
71 lines
1.9 KiB
PHP
|
|
<?php
|
||
|
|
|
||
|
|
declare(strict_types=1);
|
||
|
|
|
||
|
|
namespace AppTest\Handler;
|
||
|
|
|
||
|
|
use App\Handler\HomePageHandler;
|
||
|
|
use Laminas\Diactoros\Response\HtmlResponse;
|
||
|
|
use Laminas\Diactoros\Response\JsonResponse;
|
||
|
|
use Mezzio\Router\RouterInterface;
|
||
|
|
use Mezzio\Template\TemplateRendererInterface;
|
||
|
|
use PHPUnit\Framework\TestCase;
|
||
|
|
use Prophecy\Argument;
|
||
|
|
use Prophecy\PhpUnit\ProphecyTrait;
|
||
|
|
use Prophecy\Prophecy\ObjectProphecy;
|
||
|
|
use Psr\Container\ContainerInterface;
|
||
|
|
use Psr\Http\Message\ServerRequestInterface;
|
||
|
|
|
||
|
|
use function get_class;
|
||
|
|
|
||
|
|
class HomePageHandlerTest extends TestCase
|
||
|
|
{
|
||
|
|
use ProphecyTrait;
|
||
|
|
|
||
|
|
/** @var ContainerInterface|ObjectProphecy */
|
||
|
|
protected $container;
|
||
|
|
|
||
|
|
/** @var RouterInterface|ObjectProphecy */
|
||
|
|
protected $router;
|
||
|
|
|
||
|
|
protected function setUp(): void
|
||
|
|
{
|
||
|
|
$this->container = $this->prophesize(ContainerInterface::class);
|
||
|
|
$this->router = $this->prophesize(RouterInterface::class);
|
||
|
|
}
|
||
|
|
|
||
|
|
public function testReturnsJsonResponseWhenNoTemplateRendererProvided()
|
||
|
|
{
|
||
|
|
$homePage = new HomePageHandler(
|
||
|
|
get_class($this->container->reveal()),
|
||
|
|
$this->router->reveal(),
|
||
|
|
null
|
||
|
|
);
|
||
|
|
$response = $homePage->handle(
|
||
|
|
$this->prophesize(ServerRequestInterface::class)->reveal()
|
||
|
|
);
|
||
|
|
|
||
|
|
$this->assertInstanceOf(JsonResponse::class, $response);
|
||
|
|
}
|
||
|
|
|
||
|
|
public function testReturnsHtmlResponseWhenTemplateRendererProvided()
|
||
|
|
{
|
||
|
|
$renderer = $this->prophesize(TemplateRendererInterface::class);
|
||
|
|
$renderer
|
||
|
|
->render('app::home-page', Argument::type('array'))
|
||
|
|
->willReturn('');
|
||
|
|
|
||
|
|
$homePage = new HomePageHandler(
|
||
|
|
get_class($this->container->reveal()),
|
||
|
|
$this->router->reveal(),
|
||
|
|
$renderer->reveal()
|
||
|
|
);
|
||
|
|
|
||
|
|
$response = $homePage->handle(
|
||
|
|
$this->prophesize(ServerRequestInterface::class)->reveal()
|
||
|
|
);
|
||
|
|
|
||
|
|
$this->assertInstanceOf(HtmlResponse::class, $response);
|
||
|
|
}
|
||
|
|
}
|