<?php namespace Engelsystem\Test\Unit\Routing; use Engelsystem\Config\Config; use Engelsystem\Routing\LegacyUrlGenerator; use Engelsystem\Routing\RoutingServiceProvider; use Engelsystem\Routing\UrlGenerator; use Engelsystem\Routing\UrlGeneratorInterface; use Engelsystem\Test\Unit\ServiceProviderTest; use PHPUnit_Framework_MockObject_MockObject as MockObject; class RoutingServiceProviderTest extends ServiceProviderTest { /** * @covers \Engelsystem\Routing\RoutingServiceProvider::register() */ public function testRegister() { $app = $this->getApp(['make', 'instance', 'bind', 'get']); /** @var MockObject|Config $config */ $config = $this->getMockBuilder(Config::class)->getMock(); /** @var MockObject|UrlGeneratorInterface $urlGenerator */ $urlGenerator = $this->getMockForAbstractClass(UrlGeneratorInterface::class); /** @var MockObject|UrlGeneratorInterface $legacyUrlGenerator */ $legacyUrlGenerator = $this->getMockForAbstractClass(UrlGeneratorInterface::class); $config->expects($this->atLeastOnce()) ->method('get') ->with('rewrite_urls') ->willReturnOnConsecutiveCalls( true, false ); $this->setExpects($app, 'get', ['config'], $config, $this->atLeastOnce()); $app->expects($this->atLeastOnce()) ->method('make') ->withConsecutive( [UrlGenerator::class], [LegacyUrlGenerator::class] ) ->willReturnOnConsecutiveCalls( $urlGenerator, $legacyUrlGenerator ); $app->expects($this->atLeastOnce()) ->method('instance') ->withConsecutive( ['routing.urlGenerator', $urlGenerator], ['routing.urlGenerator', $legacyUrlGenerator] ); $this->setExpects( $app, 'bind', [UrlGeneratorInterface::class, 'routing.urlGenerator'], null, $this->atLeastOnce() ); $serviceProvider = new RoutingServiceProvider($app); $serviceProvider->register(); $serviceProvider->register(); } }