From 99ae55ff1acf2355af11058d15bdb94e21f60042 Mon Sep 17 00:00:00 2001 From: Thomas Calvet Date: Mon, 2 Mar 2020 16:43:42 +0100 Subject: [PATCH] [Routing] Fix some wrong localized routes tests --- .../Dumper/CompiledUrlGeneratorDumperTest.php | 28 +++++++++---------- .../Dumper/PhpGeneratorDumperTest.php | 28 +++++++++---------- .../Tests/Generator/UrlGeneratorTest.php | 20 +++++++------ 3 files changed, 40 insertions(+), 36 deletions(-) diff --git a/src/Symfony/Component/Routing/Tests/Generator/Dumper/CompiledUrlGeneratorDumperTest.php b/src/Symfony/Component/Routing/Tests/Generator/Dumper/CompiledUrlGeneratorDumperTest.php index de4776ff7833..299e6bd5c695 100644 --- a/src/Symfony/Component/Routing/Tests/Generator/Dumper/CompiledUrlGeneratorDumperTest.php +++ b/src/Symfony/Component/Routing/Tests/Generator/Dumper/CompiledUrlGeneratorDumperTest.php @@ -87,8 +87,8 @@ public function testDumpWithRoutes() public function testDumpWithSimpleLocalizedRoutes() { $this->routeCollection->add('test', (new Route('/foo'))); - $this->routeCollection->add('test.en', (new Route('/testing/is/fun'))->setDefault('_locale', 'en')->setDefault('_canonical_route', 'test')); - $this->routeCollection->add('test.nl', (new Route('/testen/is/leuk'))->setDefault('_locale', 'nl')->setDefault('_canonical_route', 'test')); + $this->routeCollection->add('test.en', (new Route('/testing/is/fun'))->setDefault('_locale', 'en')->setDefault('_canonical_route', 'test')->setRequirement('_locale', 'en')); + $this->routeCollection->add('test.nl', (new Route('/testen/is/leuk'))->setDefault('_locale', 'nl')->setDefault('_canonical_route', 'test')->setRequirement('_locale', 'nl')); $code = $this->generatorDumper->dump(); file_put_contents($this->testTmpFilepath, $code); @@ -120,7 +120,7 @@ public function testDumpWithRouteNotFoundLocalizedRoutes() { $this->expectException('Symfony\Component\Routing\Exception\RouteNotFoundException'); $this->expectExceptionMessage('Unable to generate a URL for the named route "test" as such route does not exist.'); - $this->routeCollection->add('test.en', (new Route('/testing/is/fun'))->setDefault('_locale', 'en')->setDefault('_canonical_route', 'test')); + $this->routeCollection->add('test.en', (new Route('/testing/is/fun'))->setDefault('_locale', 'en')->setDefault('_canonical_route', 'test')->setRequirement('_locale', 'en')); $code = $this->generatorDumper->dump(); file_put_contents($this->testTmpFilepath, $code); @@ -131,9 +131,9 @@ public function testDumpWithRouteNotFoundLocalizedRoutes() public function testDumpWithFallbackLocaleLocalizedRoutes() { - $this->routeCollection->add('test.en', (new Route('/testing/is/fun'))->setDefault('_locale', 'en')->setDefault('_canonical_route', 'test')); - $this->routeCollection->add('test.nl', (new Route('/testen/is/leuk'))->setDefault('_locale', 'nl')->setDefault('_canonical_route', 'test')); - $this->routeCollection->add('test.fr', (new Route('/tester/est/amusant'))->setDefault('_locale', 'fr')->setDefault('_canonical_route', 'test')); + $this->routeCollection->add('test.en', (new Route('/testing/is/fun'))->setDefault('_locale', 'en')->setDefault('_canonical_route', 'test')->setRequirement('_locale', 'en')); + $this->routeCollection->add('test.nl', (new Route('/testen/is/leuk'))->setDefault('_locale', 'nl')->setDefault('_canonical_route', 'test')->setRequirement('_locale', 'nl')); + $this->routeCollection->add('test.fr', (new Route('/tester/est/amusant'))->setDefault('_locale', 'fr')->setDefault('_canonical_route', 'test')->setRequirement('_locale', 'fr')); $code = $this->generatorDumper->dump(); file_put_contents($this->testTmpFilepath, $code); @@ -234,10 +234,10 @@ public function testDumpWithSchemeRequirement() public function testDumpWithLocalizedRoutesPreserveTheGoodLocaleInTheUrl() { - $this->routeCollection->add('foo.en', (new Route('/{_locale}/foo'))->setDefault('_locale', 'en')->setDefault('_canonical_route', 'foo')); - $this->routeCollection->add('foo.fr', (new Route('/{_locale}/foo'))->setDefault('_locale', 'fr')->setDefault('_canonical_route', 'foo')); - $this->routeCollection->add('fun.en', (new Route('/fun'))->setDefault('_locale', 'en')->setDefault('_canonical_route', 'fun')); - $this->routeCollection->add('fun.fr', (new Route('/amusant'))->setDefault('_locale', 'fr')->setDefault('_canonical_route', 'fun')); + $this->routeCollection->add('foo.en', (new Route('/{_locale}/fork'))->setDefault('_locale', 'en')->setDefault('_canonical_route', 'foo')->setRequirement('_locale', 'en')); + $this->routeCollection->add('foo.fr', (new Route('/{_locale}/fourchette'))->setDefault('_locale', 'fr')->setDefault('_canonical_route', 'foo')->setRequirement('_locale', 'fr')); + $this->routeCollection->add('fun.en', (new Route('/fun'))->setDefault('_locale', 'en')->setDefault('_canonical_route', 'fun')->setRequirement('_locale', 'en')); + $this->routeCollection->add('fun.fr', (new Route('/amusant'))->setDefault('_locale', 'fr')->setDefault('_canonical_route', 'fun')->setRequirement('_locale', 'fr')); file_put_contents($this->testTmpFilepath, $this->generatorDumper->dump()); @@ -246,10 +246,10 @@ public function testDumpWithLocalizedRoutesPreserveTheGoodLocaleInTheUrl() $compiledUrlGenerator = new CompiledUrlGenerator(require $this->testTmpFilepath, $requestContext, null, null); - $this->assertSame('/fr/foo', $compiledUrlGenerator->generate('foo')); - $this->assertSame('/en/foo', $compiledUrlGenerator->generate('foo.en')); - $this->assertSame('/en/foo', $compiledUrlGenerator->generate('foo', ['_locale' => 'en'])); - $this->assertSame('/en/foo', $compiledUrlGenerator->generate('foo.fr', ['_locale' => 'en'])); + $this->assertSame('/fr/fourchette', $compiledUrlGenerator->generate('foo')); + $this->assertSame('/en/fork', $compiledUrlGenerator->generate('foo.en')); + $this->assertSame('/en/fork', $compiledUrlGenerator->generate('foo', ['_locale' => 'en'])); + $this->assertSame('/fr/fourchette', $compiledUrlGenerator->generate('foo.fr', ['_locale' => 'en'])); $this->assertSame('/amusant', $compiledUrlGenerator->generate('fun')); $this->assertSame('/fun', $compiledUrlGenerator->generate('fun.en')); diff --git a/src/Symfony/Component/Routing/Tests/Generator/Dumper/PhpGeneratorDumperTest.php b/src/Symfony/Component/Routing/Tests/Generator/Dumper/PhpGeneratorDumperTest.php index 1787144780f4..28a6782a2eaf 100644 --- a/src/Symfony/Component/Routing/Tests/Generator/Dumper/PhpGeneratorDumperTest.php +++ b/src/Symfony/Component/Routing/Tests/Generator/Dumper/PhpGeneratorDumperTest.php @@ -90,8 +90,8 @@ public function testDumpWithRoutes() public function testDumpWithSimpleLocalizedRoutes() { $this->routeCollection->add('test', (new Route('/foo'))); - $this->routeCollection->add('test.en', (new Route('/testing/is/fun'))->setDefault('_locale', 'en')->setDefault('_canonical_route', 'test')); - $this->routeCollection->add('test.nl', (new Route('/testen/is/leuk'))->setDefault('_locale', 'nl')->setDefault('_canonical_route', 'test')); + $this->routeCollection->add('test.en', (new Route('/testing/is/fun'))->setDefault('_locale', 'en')->setDefault('_canonical_route', 'test')->setRequirement('_locale', 'en')); + $this->routeCollection->add('test.nl', (new Route('/testen/is/leuk'))->setDefault('_locale', 'nl')->setDefault('_canonical_route', 'test')->setRequirement('_locale', 'nl')); $code = $this->generatorDumper->dump([ 'class' => 'SimpleLocalizedProjectUrlGenerator', @@ -126,7 +126,7 @@ public function testDumpWithRouteNotFoundLocalizedRoutes() { $this->expectException('Symfony\Component\Routing\Exception\RouteNotFoundException'); $this->expectExceptionMessage('Unable to generate a URL for the named route "test" as such route does not exist.'); - $this->routeCollection->add('test.en', (new Route('/testing/is/fun'))->setDefault('_locale', 'en')->setDefault('_canonical_route', 'test')); + $this->routeCollection->add('test.en', (new Route('/testing/is/fun'))->setDefault('_locale', 'en')->setDefault('_canonical_route', 'test')->setRequirement('_locale', 'en')); $code = $this->generatorDumper->dump([ 'class' => 'RouteNotFoundLocalizedProjectUrlGenerator', @@ -140,9 +140,9 @@ public function testDumpWithRouteNotFoundLocalizedRoutes() public function testDumpWithFallbackLocaleLocalizedRoutes() { - $this->routeCollection->add('test.en', (new Route('/testing/is/fun'))->setDefault('_locale', 'en')->setDefault('_canonical_route', 'test')); - $this->routeCollection->add('test.nl', (new Route('/testen/is/leuk'))->setDefault('_locale', 'nl')->setDefault('_canonical_route', 'test')); - $this->routeCollection->add('test.fr', (new Route('/tester/est/amusant'))->setDefault('_locale', 'fr')->setDefault('_canonical_route', 'test')); + $this->routeCollection->add('test.en', (new Route('/testing/is/fun'))->setDefault('_locale', 'en')->setDefault('_canonical_route', 'test')->setRequirement('_locale', 'en')); + $this->routeCollection->add('test.nl', (new Route('/testen/is/leuk'))->setDefault('_locale', 'nl')->setDefault('_canonical_route', 'test')->setRequirement('_locale', 'nl')); + $this->routeCollection->add('test.fr', (new Route('/tester/est/amusant'))->setDefault('_locale', 'fr')->setDefault('_canonical_route', 'test')->setRequirement('_locale', 'fr')); $code = $this->generatorDumper->dump([ 'class' => 'FallbackLocaleLocalizedProjectUrlGenerator', @@ -253,10 +253,10 @@ public function testDumpWithSchemeRequirement() public function testDumpWithLocalizedRoutesPreserveTheGoodLocaleInTheUrl() { - $this->routeCollection->add('foo.en', (new Route('/{_locale}/foo'))->setDefault('_locale', 'en')->setDefault('_canonical_route', 'foo')); - $this->routeCollection->add('foo.fr', (new Route('/{_locale}/foo'))->setDefault('_locale', 'fr')->setDefault('_canonical_route', 'foo')); - $this->routeCollection->add('fun.en', (new Route('/fun'))->setDefault('_locale', 'en')->setDefault('_canonical_route', 'fun')); - $this->routeCollection->add('fun.fr', (new Route('/amusant'))->setDefault('_locale', 'fr')->setDefault('_canonical_route', 'fun')); + $this->routeCollection->add('foo.en', (new Route('/{_locale}/fork'))->setDefault('_locale', 'en')->setDefault('_canonical_route', 'foo')->setRequirement('_locale', 'en')); + $this->routeCollection->add('foo.fr', (new Route('/{_locale}/fourchette'))->setDefault('_locale', 'fr')->setDefault('_canonical_route', 'foo')->setRequirement('_locale', 'fr')); + $this->routeCollection->add('fun.en', (new Route('/fun'))->setDefault('_locale', 'en')->setDefault('_canonical_route', 'fun')->setRequirement('_locale', 'en')); + $this->routeCollection->add('fun.fr', (new Route('/amusant'))->setDefault('_locale', 'fr')->setDefault('_canonical_route', 'fun')->setRequirement('_locale', 'fr')); file_put_contents($this->testTmpFilepath, $this->generatorDumper->dump([ 'class' => 'PreserveTheGoodLocaleInTheUrlGenerator', @@ -268,10 +268,10 @@ public function testDumpWithLocalizedRoutesPreserveTheGoodLocaleInTheUrl() $phpGenerator = new \PreserveTheGoodLocaleInTheUrlGenerator($requestContext); - $this->assertSame('/fr/foo', $phpGenerator->generate('foo')); - $this->assertSame('/en/foo', $phpGenerator->generate('foo.en')); - $this->assertSame('/en/foo', $phpGenerator->generate('foo', ['_locale' => 'en'])); - $this->assertSame('/en/foo', $phpGenerator->generate('foo.fr', ['_locale' => 'en'])); + $this->assertSame('/fr/fourchette', $phpGenerator->generate('foo')); + $this->assertSame('/en/fork', $phpGenerator->generate('foo.en')); + $this->assertSame('/en/fork', $phpGenerator->generate('foo', ['_locale' => 'en'])); + $this->assertSame('/fr/fourchette', $phpGenerator->generate('foo.fr', ['_locale' => 'en'])); $this->assertSame('/amusant', $phpGenerator->generate('fun')); $this->assertSame('/fun', $phpGenerator->generate('fun.en')); diff --git a/src/Symfony/Component/Routing/Tests/Generator/UrlGeneratorTest.php b/src/Symfony/Component/Routing/Tests/Generator/UrlGeneratorTest.php index 01215da2c064..cc5d894cfa68 100644 --- a/src/Symfony/Component/Routing/Tests/Generator/UrlGeneratorTest.php +++ b/src/Symfony/Component/Routing/Tests/Generator/UrlGeneratorTest.php @@ -171,6 +171,7 @@ public function testGenerateWithDefaultLocale() foreach (['hr' => '/foo', 'en' => '/bar'] as $locale => $path) { $localizedRoute = clone $route; $localizedRoute->setDefault('_locale', $locale); + $localizedRoute->setRequirement('_locale', $locale); $localizedRoute->setDefault('_canonical_route', $name); $localizedRoute->setPath($path); $routes->add($name.'.'.$locale, $localizedRoute); @@ -195,6 +196,7 @@ public function testGenerateWithOverriddenParameterLocale() foreach (['hr' => '/foo', 'en' => '/bar'] as $locale => $path) { $localizedRoute = clone $route; $localizedRoute->setDefault('_locale', $locale); + $localizedRoute->setRequirement('_locale', $locale); $localizedRoute->setDefault('_canonical_route', $name); $localizedRoute->setPath($path); $routes->add($name.'.'.$locale, $localizedRoute); @@ -219,6 +221,7 @@ public function testGenerateWithOverriddenParameterLocaleFromRequestContext() foreach (['hr' => '/foo', 'en' => '/bar'] as $locale => $path) { $localizedRoute = clone $route; $localizedRoute->setDefault('_locale', $locale); + $localizedRoute->setRequirement('_locale', $locale); $localizedRoute->setDefault('_canonical_route', $name); $localizedRoute->setPath($path); $routes->add($name.'.'.$locale, $localizedRoute); @@ -240,18 +243,18 @@ public function testDumpWithLocalizedRoutesPreserveTheGoodLocaleInTheUrl() { $routeCollection = new RouteCollection(); - $routeCollection->add('foo.en', (new Route('/{_locale}/foo'))->setDefault('_locale', 'en')->setDefault('_canonical_route', 'foo')); - $routeCollection->add('foo.fr', (new Route('/{_locale}/foo'))->setDefault('_locale', 'fr')->setDefault('_canonical_route', 'foo')); - $routeCollection->add('fun.en', (new Route('/fun'))->setDefault('_locale', 'en')->setDefault('_canonical_route', 'fun')); - $routeCollection->add('fun.fr', (new Route('/amusant'))->setDefault('_locale', 'fr')->setDefault('_canonical_route', 'fun')); + $routeCollection->add('foo.en', (new Route('/{_locale}/fork'))->setDefault('_locale', 'en')->setDefault('_canonical_route', 'foo')->setRequirement('_locale', 'en')); + $routeCollection->add('foo.fr', (new Route('/{_locale}/fourchette'))->setDefault('_locale', 'fr')->setDefault('_canonical_route', 'foo')->setRequirement('_locale', 'fr')); + $routeCollection->add('fun.en', (new Route('/fun'))->setDefault('_locale', 'en')->setDefault('_canonical_route', 'fun')->setRequirement('_locale', 'en')); + $routeCollection->add('fun.fr', (new Route('/amusant'))->setDefault('_locale', 'fr')->setDefault('_canonical_route', 'fun')->setRequirement('_locale', 'fr')); $urlGenerator = $this->getGenerator($routeCollection); $urlGenerator->getContext()->setParameter('_locale', 'fr'); - $this->assertSame('/app.php/fr/foo', $urlGenerator->generate('foo')); - $this->assertSame('/app.php/en/foo', $urlGenerator->generate('foo.en')); - $this->assertSame('/app.php/en/foo', $urlGenerator->generate('foo', ['_locale' => 'en'])); - $this->assertSame('/app.php/en/foo', $urlGenerator->generate('foo.fr', ['_locale' => 'en'])); + $this->assertSame('/app.php/fr/fourchette', $urlGenerator->generate('foo')); + $this->assertSame('/app.php/en/fork', $urlGenerator->generate('foo.en')); + $this->assertSame('/app.php/en/fork', $urlGenerator->generate('foo', ['_locale' => 'en'])); + $this->assertSame('/app.php/fr/fourchette', $urlGenerator->generate('foo.fr', ['_locale' => 'en'])); $this->assertSame('/app.php/amusant', $urlGenerator->generate('fun')); $this->assertSame('/app.php/fun', $urlGenerator->generate('fun.en')); @@ -278,6 +281,7 @@ public function testGenerateWithInvalidLocale() foreach (['hr' => '/foo', 'en' => '/bar'] as $locale => $path) { $localizedRoute = clone $route; $localizedRoute->setDefault('_locale', $locale); + $localizedRoute->setRequirement('_locale', $locale); $localizedRoute->setDefault('_canonical_route', $name); $localizedRoute->setPath($path); $routes->add($name.'.'.$locale, $localizedRoute);