summaryrefslogtreecommitdiff
path: root/tests/Unit/Exceptions/HandlerTest.php
diff options
context:
space:
mode:
Diffstat (limited to 'tests/Unit/Exceptions/HandlerTest.php')
-rw-r--r--tests/Unit/Exceptions/HandlerTest.php108
1 files changed, 105 insertions, 3 deletions
diff --git a/tests/Unit/Exceptions/HandlerTest.php b/tests/Unit/Exceptions/HandlerTest.php
index 29759be7..40202be8 100644
--- a/tests/Unit/Exceptions/HandlerTest.php
+++ b/tests/Unit/Exceptions/HandlerTest.php
@@ -3,6 +3,10 @@
namespace Engelsystem\Test\Unit\Exceptions;
use Engelsystem\Exceptions\Handler;
+use Engelsystem\Exceptions\Handlers\HandlerInterface;
+use Engelsystem\Http\Request;
+use ErrorException;
+use Exception;
use PHPUnit\Framework\TestCase;
use PHPUnit_Framework_MockObject_MockObject as Mock;
@@ -10,14 +14,80 @@ class HandlerTest extends TestCase
{
/**
* @covers \Engelsystem\Exceptions\Handler::__construct()
+ */
+ public function testCreate()
+ {
+ /** @var Handler|Mock $handler */
+ $handler = new Handler();
+ $this->assertInstanceOf(Handler::class, $handler);
+ $this->assertEquals(Handler::ENV_PRODUCTION, $handler->getEnvironment());
+
+ $anotherHandler = new Handler(Handler::ENV_DEVELOPMENT);
+ $this->assertEquals(Handler::ENV_DEVELOPMENT, $anotherHandler->getEnvironment());
+ }
+
+ /**
+ * @covers \Engelsystem\Exceptions\Handler::errorHandler()
+ */
+ public function testErrorHandler()
+ {
+ /** @var Handler|Mock $handler */
+ $handler = $this->getMockBuilder(Handler::class)
+ ->setMethods(['exceptionHandler'])
+ ->getMock();
+
+ $handler->expects($this->once())
+ ->method('exceptionHandler')
+ ->with($this->isInstanceOf(ErrorException::class));
+
+ $handler->errorHandler(1, 'Foo and bar!', '/lo/rem.php', 123);
+ }
+
+ /**
+ * @covers \Engelsystem\Exceptions\Handler::exceptionHandler()
+ */
+ public function testExceptionHandler()
+ {
+ $exception = new Exception();
+
+ /** @var HandlerInterface|Mock $handlerMock */
+ $handlerMock = $this->getMockForAbstractClass(HandlerInterface::class);
+ $handlerMock->expects($this->once())
+ ->method('report')
+ ->with($exception);
+ $handlerMock->expects($this->once())
+ ->method('render')
+ ->with($this->isInstanceOf(Request::class), $exception);
+
+ /** @var Handler|Mock $handler */
+ $handler = $this->getMockBuilder(Handler::class)
+ ->setMethods(['die'])
+ ->getMock();
+ $handler->expects($this->once())
+ ->method('die');
+
+ $handler->setHandler(Handler::ENV_PRODUCTION, $handlerMock);
+
+ $handler->exceptionHandler($exception);
+ }
+
+ /**
* @covers \Engelsystem\Exceptions\Handler::register()
*/
public function testRegister()
{
/** @var Handler|Mock $handler */
$handler = $this->getMockForAbstractClass(Handler::class);
- $this->assertInstanceOf(Handler::class, $handler);
$handler->register();
+
+ set_error_handler($errorHandler = set_error_handler('var_dump'));
+ $this->assertEquals($handler, array_shift($errorHandler));
+
+ set_exception_handler($exceptionHandler = set_error_handler('var_dump'));
+ $this->assertEquals($handler, array_shift($exceptionHandler));
+
+ restore_error_handler();
+ restore_exception_handler();
}
/**
@@ -26,8 +96,7 @@ class HandlerTest extends TestCase
*/
public function testEnvironment()
{
- /** @var Handler|Mock $handler */
- $handler = $this->getMockForAbstractClass(Handler::class);
+ $handler = new Handler();
$handler->setEnvironment(Handler::ENV_DEVELOPMENT);
$this->assertEquals(Handler::ENV_DEVELOPMENT, $handler->getEnvironment());
@@ -35,4 +104,37 @@ class HandlerTest extends TestCase
$handler->setEnvironment(Handler::ENV_PRODUCTION);
$this->assertEquals(Handler::ENV_PRODUCTION, $handler->getEnvironment());
}
+
+ /**
+ * @covers \Engelsystem\Exceptions\Handler::setHandler()
+ * @covers \Engelsystem\Exceptions\Handler::getHandler()
+ */
+ public function testHandler()
+ {
+ $handler = new Handler();
+ /** @var HandlerInterface|Mock $devHandler */
+ $devHandler = $this->getMockForAbstractClass(HandlerInterface::class);
+ /** @var HandlerInterface|Mock $prodHandler */
+ $prodHandler = $this->getMockForAbstractClass(HandlerInterface::class);
+
+ $handler->setHandler(Handler::ENV_DEVELOPMENT, $devHandler);
+ $handler->setHandler(Handler::ENV_PRODUCTION, $prodHandler);
+ $this->assertEquals($devHandler, $handler->getHandler(Handler::ENV_DEVELOPMENT));
+ $this->assertEquals($prodHandler, $handler->getHandler(Handler::ENV_PRODUCTION));
+ $this->assertCount(2, $handler->getHandler());
+ }
+
+ /**
+ * @covers \Engelsystem\Exceptions\Handler::setRequest()
+ * @covers \Engelsystem\Exceptions\Handler::getRequest()
+ */
+ public function testRequest()
+ {
+ $handler = new Handler();
+ /** @var Request|Mock $request */
+ $request = $this->createMock(Request::class);
+
+ $handler->setRequest($request);
+ $this->assertEquals($request, $handler->getRequest());
+ }
}