84 lines
2.8 KiB
PHP
84 lines
2.8 KiB
PHP
|
<?php
|
||
|
|
||
|
namespace Engelsystem\Test\Unit\Exceptions\handlers;
|
||
|
|
||
|
|
||
|
use Engelsystem\Application;
|
||
|
use Engelsystem\Exceptions\Handlers\Whoops;
|
||
|
use Engelsystem\Http\Request;
|
||
|
use Exception;
|
||
|
use PHPUnit\Framework\TestCase;
|
||
|
use PHPUnit_Framework_MockObject_MockObject as Mock;
|
||
|
use Whoops\Handler\JsonResponseHandler;
|
||
|
use Whoops\Handler\PrettyPageHandler;
|
||
|
use Whoops\Run as WhoopsRunner;
|
||
|
use Whoops\RunInterface as WhoopsRunnerInterface;
|
||
|
|
||
|
class WhoopsTest extends TestCase
|
||
|
{
|
||
|
/**
|
||
|
* @covers \Engelsystem\Exceptions\Handlers\Whoops
|
||
|
*/
|
||
|
public function testRender()
|
||
|
{
|
||
|
/** @var Application|Mock $app */
|
||
|
$app = $this->createMock(Application::class);
|
||
|
/** @var Request|Mock $request */
|
||
|
$request = $this->createMock(Request::class);
|
||
|
$request->expects($this->once())
|
||
|
->method('isXmlHttpRequest')
|
||
|
->willReturn(true);
|
||
|
/** @var WhoopsRunnerInterface|Mock $whoopsRunner */
|
||
|
$whoopsRunner = $this->getMockForAbstractClass(WhoopsRunnerInterface::class);
|
||
|
/** @var PrettyPageHandler|Mock $prettyPageHandler */
|
||
|
$prettyPageHandler = $this->createMock(PrettyPageHandler::class);
|
||
|
$prettyPageHandler
|
||
|
->expects($this->atLeastOnce())
|
||
|
->method('setApplicationPaths');
|
||
|
$prettyPageHandler
|
||
|
->expects($this->once())
|
||
|
->method('setApplicationPaths');
|
||
|
$prettyPageHandler
|
||
|
->expects($this->once())
|
||
|
->method('addDataTable');
|
||
|
/** @var JsonResponseHandler|Mock $jsonResponseHandler */
|
||
|
$jsonResponseHandler = $this->createMock(JsonResponseHandler::class);
|
||
|
$jsonResponseHandler->expects($this->once())
|
||
|
->method('setJsonApi')
|
||
|
->with(true);
|
||
|
$jsonResponseHandler->expects($this->once())
|
||
|
->method('addTraceToOutput')
|
||
|
->with(true);
|
||
|
/** @var Exception|Mock $exception */
|
||
|
$exception = $this->createMock(Exception::class);
|
||
|
|
||
|
$app->expects($this->exactly(3))
|
||
|
->method('make')
|
||
|
->withConsecutive(
|
||
|
[WhoopsRunner::class],
|
||
|
[PrettyPageHandler::class],
|
||
|
[JsonResponseHandler::class]
|
||
|
)
|
||
|
->willReturnOnConsecutiveCalls(
|
||
|
$whoopsRunner,
|
||
|
$prettyPageHandler,
|
||
|
$jsonResponseHandler
|
||
|
);
|
||
|
|
||
|
$whoopsRunner
|
||
|
->expects($this->exactly(2))
|
||
|
->method('pushHandler')
|
||
|
->withConsecutive(
|
||
|
[$prettyPageHandler],
|
||
|
[$jsonResponseHandler]
|
||
|
);
|
||
|
$whoopsRunner
|
||
|
->expects($this->once())
|
||
|
->method('handleException')
|
||
|
->with($exception);
|
||
|
|
||
|
$handler = new Whoops($app);
|
||
|
$handler->render($request, $exception);
|
||
|
}
|
||
|
}
|