6
6
use CodeZero \LocalizedRoutes \Tests \TestCase ;
7
7
use CodeZero \LocalizedRoutes \UrlGenerator ;
8
8
use Illuminate \Support \Facades \App ;
9
- use Illuminate \Support \Facades \Config ;
9
+ use Illuminate \Support \Facades \Request ;
10
10
use Illuminate \Support \Facades \Route ;
11
11
use Illuminate \Support \Facades \URL ;
12
12
use InvalidArgumentException ;
13
13
14
14
class UrlGeneratorTest extends TestCase
15
15
{
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
-
32
16
/** @test */
33
17
public function it_binds_our_custom_url_generator_class ()
34
18
{
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 ());
37
21
}
38
22
39
23
/** @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 ()
41
25
{
26
+ $ this ->setSupportedLocales (['en ' , 'nl ' ]);
27
+ $ this ->setAppLocale ('en ' );
28
+
42
29
$ this ->registerRoute ('weirdly-named-route ' , 'en ' );
43
30
$ this ->registerRoute ('route ' , 'route ' );
44
31
$ this ->registerRoute ('en/route ' , 'en.route ' );
@@ -59,15 +46,20 @@ public function it_gets_the_url_of_a_named_route()
59
46
/** @test */
60
47
public function it_gets_the_url_of_a_route_in_the_current_locale_if_the_given_route_name_does_not_exist ()
61
48
{
49
+ $ this ->setSupportedLocales (['en ' , 'nl ' ]);
50
+ $ this ->setAppLocale ('en ' );
51
+
62
52
$ this ->registerRoute ('en/route ' , 'en.route.name ' );
63
53
64
- $ this ->assertEquals ('en ' , App::getLocale ());
65
54
$ this ->assertEquals (url ('en/route ' ), route ('route.name ' ));
66
55
}
67
56
68
57
/** @test */
69
58
public function it_throws_if_no_valid_route_can_be_found ()
70
59
{
60
+ $ this ->setSupportedLocales (['en ' , 'nl ' ]);
61
+ $ this ->setAppLocale ('en ' );
62
+
71
63
$ this ->registerRoute ('wrong-route ' , 'wrong-route ' );
72
64
73
65
$ this ->expectException (InvalidArgumentException::class);
@@ -78,9 +70,11 @@ public function it_throws_if_no_valid_route_can_be_found()
78
70
/** @test */
79
71
public function it_throws_if_no_valid_localized_route_can_be_found ()
80
72
{
73
+ $ this ->setSupportedLocales (['en ' , 'nl ' ]);
74
+ $ this ->setAppLocale ('en ' );
75
+
81
76
$ this ->registerRoute ('nl/route ' , 'nl.route.name ' );
82
77
83
- $ this ->assertEquals ('en ' , App::getLocale ());
84
78
$ this ->expectException (InvalidArgumentException::class);
85
79
86
80
route ('route.name ' );
@@ -89,10 +83,12 @@ public function it_throws_if_no_valid_localized_route_can_be_found()
89
83
/** @test */
90
84
public function it_gets_the_url_of_a_route_in_the_given_locale ()
91
85
{
86
+ $ this ->setSupportedLocales (['en ' , 'nl ' ]);
87
+ $ this ->setAppLocale ('en ' );
88
+
92
89
$ this ->registerRoute ('en/route ' , 'en.route.name ' );
93
90
$ this ->registerRoute ('nl/route ' , 'nl.route.name ' );
94
91
95
- $ this ->assertEquals ('en ' , App::getLocale ());
96
92
$ this ->assertEquals (url ('nl/route ' ), route ('route.name ' , [], true , 'nl ' ));
97
93
$ this ->assertEquals (url ('nl/route ' ), route ('en.route.name ' , [], true , 'nl ' ));
98
94
$ 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()
101
97
/** @test */
102
98
public function it_always_gets_the_url_of_a_localized_route_if_a_locale_is_specified ()
103
99
{
100
+ $ this ->setSupportedLocales (['en ' , 'nl ' ]);
101
+ $ this ->setAppLocale ('en ' );
102
+
104
103
$ this ->registerRoute ('route ' , 'route.name ' );
105
104
$ this ->registerRoute ('nl/route ' , 'nl.route.name ' );
106
105
@@ -110,9 +109,11 @@ public function it_always_gets_the_url_of_a_localized_route_if_a_locale_is_speci
110
109
/** @test */
111
110
public function it_throws_if_no_valid_route_can_be_found_for_the_given_locale ()
112
111
{
112
+ $ this ->setSupportedLocales (['en ' , 'nl ' ]);
113
+ $ this ->setAppLocale ('en ' );
114
+
113
115
$ this ->registerRoute ('en/route ' , 'en.route.name ' );
114
116
115
- $ this ->assertEquals ('en ' , App::getLocale ());
116
117
$ this ->expectException (InvalidArgumentException::class);
117
118
118
119
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()
121
122
/** @test */
122
123
public function it_temporarily_changes_the_app_locale_when_generating_a_route_url ()
123
124
{
125
+ $ this ->setSupportedLocales (['en ' , 'nl ' ]);
126
+ $ this ->setAppLocale ('en ' );
127
+
124
128
$ this ->registerRoute ('en/route/{slug} ' , 'en.route.name ' );
125
129
$ this ->registerRoute ('nl/route/{slug} ' , 'nl.route.name ' );
126
130
127
- App::setLocale ('en ' );
128
-
129
131
$ this ->assertEquals (url ('en/route/en-slug ' ), route ('route.name ' , [new Model ]));
130
132
$ this ->assertEquals (url ('en/route/en-slug ' ), route ('route.name ' , [new Model ], true , 'en ' ));
131
133
$ 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
134
136
/** @test */
135
137
public function it_generates_a_signed_route_url_for_the_current_locale ()
136
138
{
139
+ $ this ->setSupportedLocales (['en ' , 'nl ' ]);
140
+ $ this ->setAppLocale ('en ' );
141
+
137
142
$ callback = function () {
138
- return request ()-> hasValidSignature ()
143
+ return Request:: hasValidSignature ()
139
144
? 'Valid Signature '
140
145
: 'Invalid Signature ' ;
141
146
};
@@ -153,8 +158,11 @@ public function it_generates_a_signed_route_url_for_the_current_locale()
153
158
/** @test */
154
159
public function it_generates_a_signed_route_url_for_a_specific_locale ()
155
160
{
161
+ $ this ->setSupportedLocales (['en ' , 'nl ' ]);
162
+ $ this ->setAppLocale ('en ' );
163
+
156
164
$ callback = function () {
157
- return request ()-> hasValidSignature ()
165
+ return Request:: hasValidSignature ()
158
166
? 'Valid Signature '
159
167
: 'Invalid Signature ' ;
160
168
};
@@ -168,4 +176,18 @@ public function it_generates_a_signed_route_url_for_a_specific_locale()
168
176
$ this ->get ($ validUrl )->assertSee ('Valid Signature ' );
169
177
$ this ->get ($ tamperedUrl )->assertSee ('Invalid Signature ' );
170
178
}
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
+ }
171
193
}
0 commit comments