From 6962c2b790b5428699fe5897de840d41090fcd37 Mon Sep 17 00:00:00 2001 From: Igor Scheller Date: Sat, 31 Mar 2018 05:19:49 +0200 Subject: Legacy URL Support --- tests/Unit/HelpersTest.php | 5 +-- tests/Unit/Routing/LegacyUrlGeneratorTest.php | 54 +++++++++++++++++++++++ tests/Unit/Routing/RoutingServiceProviderTest.php | 49 +++++++++++++++++--- tests/Unit/Routing/UrlGeneratorTest.php | 5 ++- 4 files changed, 102 insertions(+), 11 deletions(-) create mode 100644 tests/Unit/Routing/LegacyUrlGeneratorTest.php (limited to 'tests') diff --git a/tests/Unit/HelpersTest.php b/tests/Unit/HelpersTest.php index 43c29c84..fcb7231d 100644 --- a/tests/Unit/HelpersTest.php +++ b/tests/Unit/HelpersTest.php @@ -7,7 +7,7 @@ use Engelsystem\Config\Config; use Engelsystem\Container\Container; use Engelsystem\Http\Request; use Engelsystem\Renderer\Renderer; -use Engelsystem\Routing\UrlGenerator; +use Engelsystem\Routing\UrlGeneratorInterface; use PHPUnit\Framework\TestCase; use PHPUnit_Framework_MockObject_MockObject as MockObject; use Symfony\Component\HttpFoundation\Session\Session; @@ -171,8 +171,7 @@ class HelpersTest extends TestCase */ public function testUrl() { - $urlGeneratorMock = $this->getMockBuilder(UrlGenerator::class) - ->getMock(); + $urlGeneratorMock = $this->getMockForAbstractClass(UrlGeneratorInterface::class); $this->getAppMock('routing.urlGenerator', $urlGeneratorMock); $this->assertEquals($urlGeneratorMock, url()); diff --git a/tests/Unit/Routing/LegacyUrlGeneratorTest.php b/tests/Unit/Routing/LegacyUrlGeneratorTest.php new file mode 100644 index 00000000..63e1a3eb --- /dev/null +++ b/tests/Unit/Routing/LegacyUrlGeneratorTest.php @@ -0,0 +1,54 @@ + 'abc'], 'http://foo.bar/index.php?p=foo&test=abc'], + ]; + } + + /** + * @dataProvider provideLinksTo + * @covers \Engelsystem\Routing\LegacyUrlGenerator::to + * + * @param string $urlToPath + * @param string $willReturn + * @param string[] $arguments + * @param string $expectedUrl + */ + public function testTo($urlToPath, $willReturn, $arguments, $expectedUrl) + { + $app = new Container(); + Application::setInstance($app); + + $request = $this->getMockBuilder(Request::class) + ->getMock(); + + $request->expects($this->once()) + ->method('getUriForPath') + ->with('/index.php') + ->willReturn($willReturn); + + $app->instance('request', $request); + + $urlGenerator = new LegacyUrlGenerator(); + $this->assertInstanceOf(UrlGeneratorInterface::class, $urlGenerator); + + $url = $urlGenerator->to($urlToPath, $arguments); + $this->assertEquals($expectedUrl, $url); + } +} diff --git a/tests/Unit/Routing/RoutingServiceProviderTest.php b/tests/Unit/Routing/RoutingServiceProviderTest.php index dd9441eb..ce3d7290 100644 --- a/tests/Unit/Routing/RoutingServiceProviderTest.php +++ b/tests/Unit/Routing/RoutingServiceProviderTest.php @@ -2,10 +2,13 @@ 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; +use PHPUnit_Framework_MockObject_MockObject as MockObject; class RoutingServiceProviderTest extends ServiceProviderTest { @@ -14,16 +17,48 @@ class RoutingServiceProviderTest extends ServiceProviderTest */ public function testRegister() { - /** @var PHPUnit_Framework_MockObject_MockObject|UrlGenerator $urlGenerator */ - $urlGenerator = $this->getMockBuilder(UrlGenerator::class) - ->getMock(); + $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); - $app = $this->getApp(); + $config->expects($this->atLeastOnce()) + ->method('get') + ->with('rewrite_urls') + ->willReturnOnConsecutiveCalls( + true, + false + ); - $this->setExpects($app, 'make', [UrlGenerator::class], $urlGenerator); - $this->setExpects($app, 'instance', ['routing.urlGenerator', $urlGenerator]); + $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(); } } diff --git a/tests/Unit/Routing/UrlGeneratorTest.php b/tests/Unit/Routing/UrlGeneratorTest.php index 6da59a4f..8fe0d65f 100644 --- a/tests/Unit/Routing/UrlGeneratorTest.php +++ b/tests/Unit/Routing/UrlGeneratorTest.php @@ -6,6 +6,7 @@ use Engelsystem\Application; use Engelsystem\Container\Container; use Engelsystem\Http\Request; use Engelsystem\Routing\UrlGenerator; +use Engelsystem\Routing\UrlGeneratorInterface; use PHPUnit\Framework\TestCase; class UrlGeneratorTest extends TestCase @@ -32,7 +33,6 @@ class UrlGeneratorTest extends TestCase public function testTo($urlToPath, $path, $willReturn, $arguments, $expectedUrl) { $app = new Container(); - $urlGenerator = new UrlGenerator(); Application::setInstance($app); $request = $this->getMockBuilder(Request::class) @@ -45,6 +45,9 @@ class UrlGeneratorTest extends TestCase $app->instance('request', $request); + $urlGenerator = new UrlGenerator(); + $this->assertInstanceOf(UrlGeneratorInterface::class, $urlGenerator); + $url = $urlGenerator->to($urlToPath, $arguments); $this->assertEquals($expectedUrl, $url); } -- cgit v1.2.3-54-g00ecf