diff options
author | Igor Scheller <igor.scheller@igorshp.de> | 2018-09-04 18:35:13 +0200 |
---|---|---|
committer | Igor Scheller <igor.scheller@igorshp.de> | 2018-09-04 21:13:28 +0200 |
commit | b52444af8a289e089d1239657cdf6ff06b21b29d (patch) | |
tree | c2754b3049a50ad6743841a609ab0574f241720d /tests/Unit/Middleware/RouteDispatcherServiceProviderTest.php | |
parent | b320fc779063ee80b8f0ba505cb323287ccccbf5 (diff) | |
parent | a1bc763a16ee8be109de5c9053fbc5eded53824e (diff) |
Merge remote-tracking branch 'MyIgel/routing'
Diffstat (limited to 'tests/Unit/Middleware/RouteDispatcherServiceProviderTest.php')
-rw-r--r-- | tests/Unit/Middleware/RouteDispatcherServiceProviderTest.php | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/tests/Unit/Middleware/RouteDispatcherServiceProviderTest.php b/tests/Unit/Middleware/RouteDispatcherServiceProviderTest.php new file mode 100644 index 00000000..ca784c73 --- /dev/null +++ b/tests/Unit/Middleware/RouteDispatcherServiceProviderTest.php @@ -0,0 +1,65 @@ +<?php + +namespace Engelsystem\Test\Unit\Middleware; + +use Engelsystem\Middleware\LegacyMiddleware; +use Engelsystem\Middleware\RouteDispatcher; +use Engelsystem\Middleware\RouteDispatcherServiceProvider; +use Engelsystem\Test\Unit\ServiceProviderTest; +use FastRoute\Dispatcher as FastRouteDispatcher; +use Illuminate\Contracts\Container\ContextualBindingBuilder; +use PHPUnit\Framework\MockObject\MockObject; +use Psr\Http\Server\MiddlewareInterface; + +class RouteDispatcherServiceProviderTest extends ServiceProviderTest +{ + /** + * @covers \Engelsystem\Middleware\RouteDispatcherServiceProvider::register() + */ + public function testRegister() + { + $bindingBuilder = $this->createMock(ContextualBindingBuilder::class); + $routeDispatcher = $this->getMockForAbstractClass(FastRouteDispatcher::class); + + $app = $this->getApp(['alias', 'when']); + + $app->expects($this->once()) + ->method('alias') + ->with(RouteDispatcher::class, 'route.dispatcher'); + + $app->expects($this->exactly(2)) + ->method('when') + ->with(RouteDispatcher::class) + ->willReturn($bindingBuilder); + + $bindingBuilder->expects($this->exactly(2)) + ->method('needs') + ->withConsecutive( + [FastRouteDispatcher::class], + [MiddlewareInterface::class] + ) + ->willReturn($bindingBuilder); + + $bindingBuilder->expects($this->exactly(2)) + ->method('give') + ->with($this->callback(function ($subject) { + if (is_callable($subject)) { + $subject(); + } + + return is_callable($subject) || $subject == LegacyMiddleware::class; + })); + + /** @var RouteDispatcherServiceProvider|MockObject $serviceProvider */ + $serviceProvider = $this->getMockBuilder(RouteDispatcherServiceProvider::class) + ->setConstructorArgs([$app]) + ->setMethods(['generateRouting']) + ->getMock(); + + $serviceProvider->expects($this->once()) + ->method('generateRouting') + ->willReturn($routeDispatcher); + + $serviceProvider->register(); + } +} |