66use CodeZero \LocalizedRoutes \Tests \TestCase ;
77use CodeZero \LocalizedRoutes \UrlGenerator ;
88use Illuminate \Support \Facades \App ;
9- use Illuminate \Support \Facades \Config ;
9+ use Illuminate \Support \Facades \Request ;
1010use Illuminate \Support \Facades \Route ;
1111use Illuminate \Support \Facades \URL ;
1212use InvalidArgumentException ;
1313
1414class UrlGeneratorTest extends TestCase
1515{
16- protected function setUp (): void
17- {
18- parent ::setUp ();
19-
20- Config::set ('localized-routes.supported-locales ' , ['en ' , 'nl ' ]);
21-
22- App::setLocale ('en ' );
23- }
24-
25- protected function registerRoute ($ url , $ name , $ callback = null )
26- {
27- Route::getRoutes ()->add (
28- Route::name ($ name )->get ($ url , $ callback ?: function () {})
29- );
30- }
31-
3216 /** @test */
3317 public function it_binds_our_custom_url_generator_class ()
3418 {
35- $ this ->assertInstanceOf (UrlGenerator::class, app ('url ' ));
36- $ this ->assertInstanceOf (UrlGenerator::class, redirect ( )->getUrlGenerator ());
19+ $ this ->assertInstanceOf (UrlGenerator::class, App:: make ('url ' ));
20+ $ this ->assertInstanceOf (UrlGenerator::class, App:: make ( ' redirect ' )->getUrlGenerator ());
3721 }
3822
3923 /** @test */
40- public function it_gets_the_url_of_a_named_route ()
24+ public function it_gets_the_url_of_a_named_route_as_usual ()
4125 {
26+ $ this ->setSupportedLocales (['en ' , 'nl ' ]);
27+ $ this ->setAppLocale ('en ' );
28+
4229 $ this ->registerRoute ('weirdly-named-route ' , 'en ' );
4330 $ this ->registerRoute ('route ' , 'route ' );
4431 $ this ->registerRoute ('en/route ' , 'en.route ' );
@@ -59,15 +46,20 @@ public function it_gets_the_url_of_a_named_route()
5946 /** @test */
6047 public function it_gets_the_url_of_a_route_in_the_current_locale_if_the_given_route_name_does_not_exist ()
6148 {
49+ $ this ->setSupportedLocales (['en ' , 'nl ' ]);
50+ $ this ->setAppLocale ('en ' );
51+
6252 $ this ->registerRoute ('en/route ' , 'en.route.name ' );
6353
64- $ this ->assertEquals ('en ' , App::getLocale ());
6554 $ this ->assertEquals (url ('en/route ' ), route ('route.name ' ));
6655 }
6756
6857 /** @test */
6958 public function it_throws_if_no_valid_route_can_be_found ()
7059 {
60+ $ this ->setSupportedLocales (['en ' , 'nl ' ]);
61+ $ this ->setAppLocale ('en ' );
62+
7163 $ this ->registerRoute ('wrong-route ' , 'wrong-route ' );
7264
7365 $ this ->expectException (InvalidArgumentException::class);
@@ -78,9 +70,11 @@ public function it_throws_if_no_valid_route_can_be_found()
7870 /** @test */
7971 public function it_throws_if_no_valid_localized_route_can_be_found ()
8072 {
73+ $ this ->setSupportedLocales (['en ' , 'nl ' ]);
74+ $ this ->setAppLocale ('en ' );
75+
8176 $ this ->registerRoute ('nl/route ' , 'nl.route.name ' );
8277
83- $ this ->assertEquals ('en ' , App::getLocale ());
8478 $ this ->expectException (InvalidArgumentException::class);
8579
8680 route ('route.name ' );
@@ -89,10 +83,12 @@ public function it_throws_if_no_valid_localized_route_can_be_found()
8983 /** @test */
9084 public function it_gets_the_url_of_a_route_in_the_given_locale ()
9185 {
86+ $ this ->setSupportedLocales (['en ' , 'nl ' ]);
87+ $ this ->setAppLocale ('en ' );
88+
9289 $ this ->registerRoute ('en/route ' , 'en.route.name ' );
9390 $ this ->registerRoute ('nl/route ' , 'nl.route.name ' );
9491
95- $ this ->assertEquals ('en ' , App::getLocale ());
9692 $ this ->assertEquals (url ('nl/route ' ), route ('route.name ' , [], true , 'nl ' ));
9793 $ this ->assertEquals (url ('nl/route ' ), route ('en.route.name ' , [], true , 'nl ' ));
9894 $ this ->assertEquals (url ('nl/route ' ), route ('nl.route.name ' , [], true , 'nl ' ));
@@ -101,6 +97,9 @@ public function it_gets_the_url_of_a_route_in_the_given_locale()
10197 /** @test */
10298 public function it_always_gets_the_url_of_a_localized_route_if_a_locale_is_specified ()
10399 {
100+ $ this ->setSupportedLocales (['en ' , 'nl ' ]);
101+ $ this ->setAppLocale ('en ' );
102+
104103 $ this ->registerRoute ('route ' , 'route.name ' );
105104 $ this ->registerRoute ('nl/route ' , 'nl.route.name ' );
106105
@@ -110,9 +109,11 @@ public function it_always_gets_the_url_of_a_localized_route_if_a_locale_is_speci
110109 /** @test */
111110 public function it_throws_if_no_valid_route_can_be_found_for_the_given_locale ()
112111 {
112+ $ this ->setSupportedLocales (['en ' , 'nl ' ]);
113+ $ this ->setAppLocale ('en ' );
114+
113115 $ this ->registerRoute ('en/route ' , 'en.route.name ' );
114116
115- $ this ->assertEquals ('en ' , App::getLocale ());
116117 $ this ->expectException (InvalidArgumentException::class);
117118
118119 route ('en.route.name ' , [], true , 'nl ' );
@@ -121,11 +122,12 @@ public function it_throws_if_no_valid_route_can_be_found_for_the_given_locale()
121122 /** @test */
122123 public function it_temporarily_changes_the_app_locale_when_generating_a_route_url ()
123124 {
125+ $ this ->setSupportedLocales (['en ' , 'nl ' ]);
126+ $ this ->setAppLocale ('en ' );
127+
124128 $ this ->registerRoute ('en/route/{slug} ' , 'en.route.name ' );
125129 $ this ->registerRoute ('nl/route/{slug} ' , 'nl.route.name ' );
126130
127- App::setLocale ('en ' );
128-
129131 $ this ->assertEquals (url ('en/route/en-slug ' ), route ('route.name ' , [new Model ]));
130132 $ this ->assertEquals (url ('en/route/en-slug ' ), route ('route.name ' , [new Model ], true , 'en ' ));
131133 $ this ->assertEquals (url ('nl/route/nl-slug ' ), route ('route.name ' , [new Model ], true , 'nl ' ));
@@ -134,8 +136,11 @@ public function it_temporarily_changes_the_app_locale_when_generating_a_route_ur
134136 /** @test */
135137 public function it_generates_a_signed_route_url_for_the_current_locale ()
136138 {
139+ $ this ->setSupportedLocales (['en ' , 'nl ' ]);
140+ $ this ->setAppLocale ('en ' );
141+
137142 $ callback = function () {
138- return request ()-> hasValidSignature ()
143+ return Request:: hasValidSignature ()
139144 ? 'Valid Signature '
140145 : 'Invalid Signature ' ;
141146 };
@@ -153,8 +158,11 @@ public function it_generates_a_signed_route_url_for_the_current_locale()
153158 /** @test */
154159 public function it_generates_a_signed_route_url_for_a_specific_locale ()
155160 {
161+ $ this ->setSupportedLocales (['en ' , 'nl ' ]);
162+ $ this ->setAppLocale ('en ' );
163+
156164 $ callback = function () {
157- return request ()-> hasValidSignature ()
165+ return Request:: hasValidSignature ()
158166 ? 'Valid Signature '
159167 : 'Invalid Signature ' ;
160168 };
@@ -168,4 +176,18 @@ public function it_generates_a_signed_route_url_for_a_specific_locale()
168176 $ this ->get ($ validUrl )->assertSee ('Valid Signature ' );
169177 $ this ->get ($ tamperedUrl )->assertSee ('Invalid Signature ' );
170178 }
179+
180+ /**
181+ * Register a route.
182+ *
183+ * @param string $url
184+ * @param string $name
185+ * @param \Closure|null $callback
186+ *
187+ * @return void
188+ */
189+ protected function registerRoute ($ url , $ name , $ callback = null )
190+ {
191+ Route::name ($ name )->get ($ url , $ callback ?: function () {});
192+ }
171193}
0 commit comments