1111use PHPAether \Tests \MockHTTPRequestTestCase ;
1212use PHPUnit \Framework \Attributes \DataProvider ;
1313use PHPUnit \Framework \Attributes \Test ;
14- use PHPUnit \Framework \MockObject \Exception ;
1514
1615class RouterTest extends MockHTTPRequestTestCase
1716{
@@ -126,17 +125,19 @@ public function it_registers_cli_routes_from_file(): void
126125 }
127126
128127 /**
129- * @throws Exception
130- * @throws RouterException
128+ * @param callable $requestBuilder
129+ * @param array|null $expected
130+ * @throws MethodNotAllowedException
131+ * @throws RouteNotFoundException
131132 */
132133 #[Test]
133134 #[DataProvider('mockHTTPRequestTestCases ' )]
134- public function it_routes_request_to_route (string $ url , string $ method , ?array $ expected =[])
135+ public function it_routes_request_to_route (callable $ requestBuilder , ?array $ expected =[])
135136 {
136137 $ expectedRoute = $ expected ['router ' ]['route ' ] ?? null ;
137138
138139 // Mock a request object; register routes
139- $ request = $ this -> createMockRequest ( $ url , $ method );
140+ $ request = $ requestBuilder ( $ this );
140141 $ this ->router ->registerRoutesFromFiles (TESTS_DIR . '/config/routes ' );
141142
142143 $ actualRoute = $ this ->router ->route ($ request )['route ' ];
@@ -166,7 +167,8 @@ public function it_throws_method_not_allowed_for_invalid_routes(): void
166167 public function it_throws_route_not_found_for_invalid_routes (): void
167168 {
168169 $ this ->expectException (RouteNotFoundException::class);
169- $ this ->router ->route ($ this ->createMockRequest ('/tests/some/products/2 ' , 'GET ' ));
170+ $ request = $ this ->createMockRequest ('/tests/some/products/2 ' , 'GET ' );
171+ $ this ->router ->route ($ request );
170172 }
171173
172174 /**
@@ -177,10 +179,8 @@ public function it_matches_wildcard_route(): void
177179 {
178180 // Register a wildcard route
179181 $ this ->router ->get ('/tests/books/:id ' , fn () => '' );
180- $ this ->assertEquals (
181- ['id ' => 5 ],
182- $ this ->router ->route ($ this ->createMockRequest ('/tests/books/5 ' , 'GET ' ))['params ' ]
183- );
182+ $ request = $ this ->createMockRequest ('/tests/books/5 ' , 'GET ' );
184183
184+ $ this ->assertEquals (['id ' => 5 ], $ this ->router ->route ($ request )['params ' ]);
185185 }
186186}
0 commit comments