From f9a1c4d7276870b7808a8042dc767f43b490990b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20H=C3=A4rtl?= Date: Mon, 21 Mar 2016 10:13:37 +0100 Subject: [PATCH] Issue #63 Add test cases for creating absolute URLs --- tests/UrlCreationTest.php | 65 +++++++++++++++++++++++++++++++++++++-- 1 file changed, 63 insertions(+), 2 deletions(-) diff --git a/tests/UrlCreationTest.php b/tests/UrlCreationTest.php index 7e1f7c5..40547bf 100644 --- a/tests/UrlCreationTest.php +++ b/tests/UrlCreationTest.php @@ -61,6 +61,21 @@ public function testCreateUrlWithLanguageFromUrl() $this->assertEquals($this->prepareUrl('/de/foo/baz/bar?x=y'), Url::to(['/slug/action', 'x' => 'y', 'term' => 'baz'])); } + public function testCreateAbsoluteUrlWithLanguageFromUrl() + { + $this->mockUrlManager([ + 'languages' => ['en-US', 'en', 'de'], + 'rules' => [ + '/foo//bar' => 'slug/action', + ], + ]); + $this->mockRequest('/de/site/page'); + $this->assertEquals('http://localhost'.$this->prepareUrl('/de/demo/action'), Url::to(['/demo/action'], 'http')); + $this->assertEquals('http://localhost'.$this->prepareUrl('/de/demo/action?x=y'), Url::to(['/demo/action', 'x' => 'y'], 'http')); + $this->assertEquals('http://localhost'.$this->prepareUrl('/de/foo/baz/bar'), Url::to(['/slug/action', 'term' => 'baz'], 'http')); + $this->assertEquals('http://localhost'.$this->prepareUrl('/de/foo/baz/bar?x=y'), Url::to(['/slug/action', 'x' => 'y', 'term' => 'baz'], 'http')); + } + public function testCreateUrlWithLanguageFromUrlIfUppercaseEnabled() { $this->mockUrlManager([ @@ -91,6 +106,20 @@ public function testCreateHomeUrlWithLanguageFromUrl() $this->assertEquals($this->prepareUrl('/de?x=y'), Url::to(['/site/index', 'x' => 'y'])); } + public function testCreateAbsoluteHomeUrlWithLanguageFromUrl() + { + $this->mockUrlManager([ + 'languages' => ['en-US', 'en', 'de'], + 'rules' => [ + '' => 'site/index', + '/foo//bar' => 'slug/action', + ], + ]); + $this->mockRequest('/de/site/page'); + $this->assertEquals('http://localhost'.$this->prepareUrl('/de'), Url::to(['/site/index'], 'http')); + $this->assertEquals('http://localhost'.$this->prepareUrl('/de?x=y'), Url::to(['/site/index', 'x' => 'y'], 'http')); + } + public function testCreateUrlWithSpecificLanguage() { $this->mockUrlManager([ @@ -107,6 +136,22 @@ public function testCreateUrlWithSpecificLanguage() $this->assertEquals($this->prepareUrl('/en-us/foo/baz/bar?x=y'), Url::to(['/slug/action', 'language' => 'en-US', 'x' => 'y', 'term' => 'baz'])); } + public function testCreateAbsoluteUrlWithSpecificLanguage() + { + $this->mockUrlManager([ + 'languages' => ['en-US', 'en', 'de'], + 'rules' => [ + '/foo//bar' => 'slug/action', + ], + ]); + $this->mockRequest('/de/site/page'); + $this->assertEquals('http://localhost'.$this->prepareUrl('/en-us'), Url::to(['/', 'language' => 'en-US'], 'http')); + $this->assertEquals('http://localhost'.$this->prepareUrl('/en-us/demo/action'), Url::to(['/demo/action', 'language' => 'en-US'], 'http')); + $this->assertEquals('http://localhost'.$this->prepareUrl('/en-us/demo/action?x=y'), Url::to(['/demo/action', 'language' => 'en-US', 'x'=>'y'], 'http')); + $this->assertEquals('http://localhost'.$this->prepareUrl('/en-us/foo/baz/bar'), Url::to(['/slug/action', 'language' => 'en-US', 'term' => 'baz'], 'http')); + $this->assertEquals('http://localhost'.$this->prepareUrl('/en-us/foo/baz/bar?x=y'), Url::to(['/slug/action', 'language' => 'en-US', 'x' => 'y', 'term' => 'baz'], 'http')); + } + public function testCreateUrlWithSpecificAliasedLanguage() { $this->mockUrlManager([ @@ -157,7 +202,7 @@ public function testCreateUrlWithLanguageFromUrlIfIgnoreRouteDoesNotMatch() $this->assertEquals($this->prepareUrl('/de/foo/baz/bar?x=y'), Url::to(['/slug/action', 'x' => 'y', 'term' => 'baz'])); } - public function testCreateUrlWithLanguageAndTrailingSlashFromUrl() + public function testCreateUrlWithTralingSlashWithLanguageFromUrl() { $this->mockUrlManager([ 'languages' => ['en-US', 'en', 'de'], @@ -173,6 +218,22 @@ public function testCreateUrlWithLanguageAndTrailingSlashFromUrl() $this->assertEquals($this->prepareUrl('/de/foo/baz/bar/?x=y'), Url::to(['/slug/action', 'x' => 'y', 'term' => 'baz'])); } + public function testCreateAbsoluteUrlWithTralingSlashWithLanguageFromUrl() + { + $this->mockUrlManager([ + 'languages' => ['en-US', 'en', 'de'], + 'suffix' => '/', + 'rules' => [ + '/foo//bar' => 'slug/action', + ], + ]); + $this->mockRequest('/de/site/page/'); + $this->assertEquals('http://localhost'.$this->prepareUrl('/de/demo/action/'), Url::to(['/demo/action'], 'http')); + $this->assertEquals('http://localhost'.$this->prepareUrl('/de/demo/action/?x=y'), Url::to(['/demo/action', 'x'=>'y'], 'http')); + $this->assertEquals('http://localhost'.$this->prepareUrl('/de/foo/baz/bar/'), Url::to(['/slug/action', 'term' => 'baz'], 'http')); + $this->assertEquals('http://localhost'.$this->prepareUrl('/de/foo/baz/bar/?x=y'), Url::to(['/slug/action', 'x' => 'y', 'term' => 'baz'], 'http')); + } + public function testCreateHomeUrlWithTrailingSlashWithLanguageFromUrl() { $this->mockUrlManager([ @@ -204,7 +265,7 @@ public function testCreateUrlWithSpecificLanguageWithTrailingSlash() $this->assertEquals($this->prepareUrl('/en-us/foo/baz/bar/?x=y'), Url::to(['/slug/action', 'language' => 'en-US', 'x' => 'y', 'term' => 'baz'])); } - public function testCreateUrlUppercaseLanguageIfEnabled() + public function testCreateUrlWithUppercaseLanguageIfEnabled() { $this->mockUrlManager([ 'languages' => ['en-US', 'en', 'de'],