diff options
author | Igor Scheller <igor.scheller@igorshp.de> | 2018-08-25 21:16:20 +0200 |
---|---|---|
committer | Igor Scheller <igor.scheller@igorshp.de> | 2018-08-25 21:48:39 +0200 |
commit | a1bc763a16ee8be109de5c9053fbc5eded53824e (patch) | |
tree | 7253db0c8ea918e82253bef3926bcba461a7105d /tests/Unit/Middleware/ResolvesMiddlewareTraitTest.php | |
parent | 73c9d923e7cc77847cfcbff4b90ad4815699a4fa (diff) |
Added nikic/fast-route as routing dispatcher
Diffstat (limited to 'tests/Unit/Middleware/ResolvesMiddlewareTraitTest.php')
-rw-r--r-- | tests/Unit/Middleware/ResolvesMiddlewareTraitTest.php | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/tests/Unit/Middleware/ResolvesMiddlewareTraitTest.php b/tests/Unit/Middleware/ResolvesMiddlewareTraitTest.php new file mode 100644 index 00000000..320a6d6b --- /dev/null +++ b/tests/Unit/Middleware/ResolvesMiddlewareTraitTest.php @@ -0,0 +1,67 @@ +<?php + +namespace Engelsystem\Test\Unit\Middleware; + +use Engelsystem\Application; +use Engelsystem\Middleware\CallableHandler; +use Engelsystem\Test\Unit\Middleware\Stub\HasStaticMethod; +use Engelsystem\Test\Unit\Middleware\Stub\ResolvesMiddlewareTraitImplementation; +use InvalidArgumentException; +use PHPUnit\Framework\MockObject\MockObject; +use PHPUnit\Framework\TestCase; +use Psr\Http\Server\MiddlewareInterface; + +class ResolvesMiddlewareTraitTest extends TestCase +{ + /** + * @covers \Engelsystem\Middleware\ResolvesMiddlewareTrait::resolveMiddleware + * @covers \Engelsystem\Middleware\ResolvesMiddlewareTrait::isMiddleware + */ + public function testResolveMiddleware() + { + /** @var Application|MockObject $container */ + $container = $this->createMock(Application::class); + $middlewareInterface = $this->getMockForAbstractClass(MiddlewareInterface::class); + $callable = [HasStaticMethod::class, 'foo']; + + $container->expects($this->exactly(3)) + ->method('make') + ->withConsecutive( + ['FooBarClass'], + [CallableHandler::class, ['callable' => $callable]], + ['UnresolvableClass'] + ) + ->willReturnOnConsecutiveCalls( + $middlewareInterface, + $middlewareInterface, + null + ); + + $middleware = new ResolvesMiddlewareTraitImplementation($container); + + $return = $middleware->callResolveMiddleware('FooBarClass'); + $this->assertEquals($middlewareInterface, $return); + + $return = $middleware->callResolveMiddleware($callable); + $this->assertEquals($middlewareInterface, $return); + + $this->expectException(InvalidArgumentException::class); + $middleware->callResolveMiddleware('UnresolvableClass'); + } + + /** + * @covers \Engelsystem\Middleware\ResolvesMiddlewareTrait::resolveMiddleware + */ + public function testResolveMiddlewareNoContainer() + { + $middlewareInterface = $this->getMockForAbstractClass(MiddlewareInterface::class); + + $middleware = new ResolvesMiddlewareTraitImplementation(); + $return = $middleware->callResolveMiddleware($middlewareInterface); + + $this->assertEquals($middlewareInterface, $return); + + $this->expectException(InvalidArgumentException::class); + $middleware->callResolveMiddleware('FooBarClass'); + } +} |