summaryrefslogtreecommitdiff
path: root/tests/Unit/Middleware/ResolvesMiddlewareTraitTest.php
diff options
context:
space:
mode:
authormsquare <msquare@notrademark.de>2018-09-07 20:50:31 +0200
committermsquare <msquare@notrademark.de>2018-09-07 20:50:31 +0200
commit2d6bca1357faff28bc1f86a56b432cc463ff7574 (patch)
treece18461d2e170ac28dd365342a1f125a8a31aa3a /tests/Unit/Middleware/ResolvesMiddlewareTraitTest.php
parentb320fc779063ee80b8f0ba505cb323287ccccbf5 (diff)
parentce6d0fd13b54ac79a955b85d50860736a520d333 (diff)
Merge branch 'MyIgel-routing'
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');
+ }
+}