summaryrefslogtreecommitdiff
path: root/tests/Unit/Middleware/ResolvesMiddlewareTraitTest.php
diff options
context:
space:
mode:
Diffstat (limited to 'tests/Unit/Middleware/ResolvesMiddlewareTraitTest.php')
-rw-r--r--tests/Unit/Middleware/ResolvesMiddlewareTraitTest.php67
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');
+ }
+}