|
11 | 11 | use Tempest\Database\Migrations\CreateMigrationsTable; |
12 | 12 | use Tempest\Http\Status; |
13 | 13 | use Tempest\Router\GenericRouter; |
| 14 | +use Tempest\Router\MatchedRoute; |
14 | 15 | use Tempest\Router\Responses\Ok; |
15 | 16 | use Tempest\Router\Router; |
16 | 17 | use Tests\Tempest\Fixtures\Controllers\ControllerWithEnumBinding; |
@@ -209,4 +210,41 @@ public function test_json_request(): void |
209 | 210 | $this->assertSame(Status::OK, $response->status); |
210 | 211 | $this->assertSame('foo', $response->body); |
211 | 212 | } |
| 213 | + |
| 214 | + public function test_is_current_uri(): void |
| 215 | + { |
| 216 | + $router = $this->container->get(GenericRouter::class); |
| 217 | + |
| 218 | + $this->http->get('/test')->assertOk(); |
| 219 | + |
| 220 | + $this->assertTrue($router->isCurrentUri([TestController::class, '__invoke'])); |
| 221 | + $this->assertFalse($router->isCurrentUri([TestController::class, 'withParams'])); |
| 222 | + $this->assertFalse($router->isCurrentUri([TestController::class, 'withParams'], id: 1)); |
| 223 | + $this->assertFalse($router->isCurrentUri([TestController::class, 'withParams'], id: 1, name: 'a')); |
| 224 | + } |
| 225 | + |
| 226 | + public function test_is_current_uri_with_constrained_parameters(): void |
| 227 | + { |
| 228 | + $router = $this->container->get(GenericRouter::class); |
| 229 | + |
| 230 | + $this->http->get('/test/1/a')->assertOk(); |
| 231 | + |
| 232 | + $this->assertTrue($router->isCurrentUri([TestController::class, 'withCustomRegexParams'])); |
| 233 | + $this->assertTrue($router->isCurrentUri([TestController::class, 'withCustomRegexParams'], id: 1)); |
| 234 | + $this->assertTrue($router->isCurrentUri([TestController::class, 'withCustomRegexParams'], id: 1, name: 'a')); |
| 235 | + $this->assertFalse($router->isCurrentUri([TestController::class, 'withCustomRegexParams'], id: 1, name: 'b')); |
| 236 | + $this->assertFalse($router->isCurrentUri([TestController::class, 'withCustomRegexParams'], id: 0, name: 'a')); |
| 237 | + $this->assertFalse($router->isCurrentUri([TestController::class, 'withCustomRegexParams'], id: 0, name: 'b')); |
| 238 | + } |
| 239 | + |
| 240 | + public function test_is_current_uri_with_enum(): void |
| 241 | + { |
| 242 | + $router = $this->container->get(GenericRouter::class); |
| 243 | + |
| 244 | + $this->http->get('/with-enum/foo')->assertOk(); |
| 245 | + |
| 246 | + $this->assertTrue($router->isCurrentUri(ControllerWithEnumBinding::class)); |
| 247 | + $this->assertTrue($router->isCurrentUri(ControllerWithEnumBinding::class, input: EnumForController::FOO)); |
| 248 | + $this->assertFalse($router->isCurrentUri(ControllerWithEnumBinding::class, input: EnumForController::BAR)); |
| 249 | + } |
212 | 250 | } |
0 commit comments