summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorIgor Scheller <igor.scheller@igorshp.de>2018-03-31 05:19:49 +0200
committerIgor Scheller <igor.scheller@igorshp.de>2018-08-05 21:46:05 +0200
commit6962c2b790b5428699fe5897de840d41090fcd37 (patch)
tree646a1dca1db5e801f70733ce6b30d8682241207f /tests
parent9ca36bed3446cdd4060d7d6fa1025512d0922e0e (diff)
Legacy URL Support
Diffstat (limited to 'tests')
-rw-r--r--tests/Unit/HelpersTest.php5
-rw-r--r--tests/Unit/Routing/LegacyUrlGeneratorTest.php54
-rw-r--r--tests/Unit/Routing/RoutingServiceProviderTest.php49
-rw-r--r--tests/Unit/Routing/UrlGeneratorTest.php5
4 files changed, 102 insertions, 11 deletions
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 @@
+<?php
+
+namespace Engelsystem\Test\Unit\Routing;
+
+use Engelsystem\Application;
+use Engelsystem\Container\Container;
+use Engelsystem\Http\Request;
+use Engelsystem\Routing\LegacyUrlGenerator;
+use Engelsystem\Routing\UrlGeneratorInterface;
+use PHPUnit\Framework\TestCase;
+
+class LegacyUrlGeneratorTest extends TestCase
+{
+ public function provideLinksTo()
+ {
+ return [
+ ['/', 'http://foo.bar/index.php', [], 'http://foo.bar/index.php'],
+ ['/foo-path', 'http://foo.bar/index.php/index.php', [], 'http://foo.bar/index.php?p=foo_path'],
+ ['/foo', 'http://foo.bar/index.php/index.php', [], 'http://foo.bar/index.php?p=foo'],
+ ['foo', 'http://foo.bar/index.php', ['test' => '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);
}