@@ -67,37 +67,37 @@ public function testCollect(): void
67
67
[
68
68
'method ' => 'GET ' ,
69
69
'route ' => 'journals ' ,
70
- 'name ' => ' journals ' ,
70
+ 'name ' => null ,
71
71
'handler ' => '\App\Controllers\Blogs ' ,
72
72
],
73
73
[
74
74
'method ' => 'GET ' ,
75
75
'route ' => '100 ' ,
76
- 'name ' => ' 100 ' ,
76
+ 'name ' => null ,
77
77
'handler ' => '\App\Controllers\Home::index ' ,
78
78
],
79
79
[
80
80
'method ' => 'GET ' ,
81
81
'route ' => 'product/([0-9]+) ' ,
82
- 'name ' => ' product/([0-9]+) ' ,
82
+ 'name ' => null ,
83
83
'handler ' => '\App\Controllers\Catalog::productLookupByID/$1 ' ,
84
84
],
85
85
[
86
86
'method ' => 'GET ' ,
87
87
'route ' => 'feed ' ,
88
- 'name ' => ' feed ' ,
88
+ 'name ' => null ,
89
89
'handler ' => '(Closure) ' ,
90
90
],
91
91
[
92
92
'method ' => 'GET ' ,
93
93
'route ' => '200 ' ,
94
- 'name ' => ' 200 ' ,
94
+ 'name ' => null ,
95
95
'handler ' => '(Closure) ' ,
96
96
],
97
97
[
98
98
'method ' => 'GET ' ,
99
99
'route ' => 'about ' ,
100
- 'name ' => ' about ' ,
100
+ 'name ' => null ,
101
101
'handler ' => '(View) pages/about ' ,
102
102
],
103
103
];
@@ -144,4 +144,100 @@ public function testCollectSameFromWithDifferentVerb(): void
144
144
];
145
145
$ this ->assertSame ($ expected , $ definedRoutes );
146
146
}
147
+
148
+ /**
149
+ * @see https://github.com/codeigniter4/CodeIgniter4/pull/9499
150
+ */
151
+ public function testCollectSameNameWithDifferentFrom (): void
152
+ {
153
+ $ routes = $ this ->createRouteCollection ();
154
+ $ routes ->get ('/ ' , 'HomeController::index ' );
155
+ $ routes ->post ('login ' , 'AuthController::login ' , ['as ' => 'login ' ]);
156
+ $ routes ->get ('logout ' , 'AuthController::logout ' , ['as ' => 'logout ' ]);
157
+
158
+ $ collector = new DefinedRouteCollector ($ routes );
159
+
160
+ $ definedRoutes = [];
161
+
162
+ foreach ($ collector ->collect () as $ route ) {
163
+ $ definedRoutes [] = $ route ;
164
+ }
165
+
166
+ $ expected = [
167
+ [
168
+ 'method ' => 'GET ' ,
169
+ 'route ' => '/ ' ,
170
+ 'name ' => null ,
171
+ 'handler ' => '\\App \\Controllers \\HomeController::index ' ,
172
+ ],
173
+ [
174
+ 'method ' => 'GET ' ,
175
+ 'route ' => 'logout ' ,
176
+ 'name ' => 'logout ' ,
177
+ 'handler ' => '\\App \\Controllers \\AuthController::logout ' ,
178
+ ],
179
+ [
180
+ 'method ' => 'POST ' ,
181
+ 'route ' => 'login ' ,
182
+ 'name ' => 'login ' ,
183
+ 'handler ' => '\\App \\Controllers \\AuthController::login ' ,
184
+ ],
185
+ ];
186
+ $ this ->assertSame ($ expected , $ definedRoutes );
187
+ }
188
+
189
+ /**
190
+ * @see https://github.com/codeigniter4/CodeIgniter4/pull/9499
191
+ */
192
+ public function testCollectSameNames (): void
193
+ {
194
+ $ routes = $ this ->createRouteCollection ();
195
+ $ routes ->get ('/ ' , 'HomeController::index ' );
196
+ $ routes ->post ('login ' , 'AuthController::login ' , ['as ' => 'login ' ]);
197
+ $ routes ->post ('user/login ' , 'UserController::login ' , ['as ' => 'login ' ]);
198
+ $ routes ->get ('logout ' , 'AuthController::logout ' , ['as ' => 'logout ' ]);
199
+ $ routes ->get ('user/logout ' , 'UserController::logout ' , ['as ' => 'logout ' ]);
200
+
201
+ $ collector = new DefinedRouteCollector ($ routes );
202
+
203
+ $ definedRoutes = [];
204
+
205
+ foreach ($ collector ->collect () as $ route ) {
206
+ $ definedRoutes [] = $ route ;
207
+ }
208
+
209
+ $ expected = [
210
+ [
211
+ 'method ' => 'GET ' ,
212
+ 'route ' => '/ ' ,
213
+ 'name ' => null ,
214
+ 'handler ' => '\\App \\Controllers \\HomeController::index ' ,
215
+ ],
216
+ [
217
+ 'method ' => 'GET ' ,
218
+ 'route ' => 'logout ' ,
219
+ 'name ' => 'logout ' ,
220
+ 'handler ' => '\\App \\Controllers \\AuthController::logout ' ,
221
+ ],
222
+ [
223
+ 'method ' => 'GET ' ,
224
+ 'route ' => 'user/logout ' ,
225
+ 'name ' => null ,
226
+ 'handler ' => '\\App \\Controllers \\UserController::logout ' ,
227
+ ],
228
+ [
229
+ 'method ' => 'POST ' ,
230
+ 'route ' => 'login ' ,
231
+ 'name ' => 'login ' ,
232
+ 'handler ' => '\\App \\Controllers \\AuthController::login ' ,
233
+ ],
234
+ [
235
+ 'method ' => 'POST ' ,
236
+ 'route ' => 'user/login ' ,
237
+ 'name ' => null ,
238
+ 'handler ' => '\\App \\Controllers \\UserController::login ' ,
239
+ ],
240
+ ];
241
+ $ this ->assertSame ($ expected , $ definedRoutes );
242
+ }
147
243
}
0 commit comments