|
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; |
|
23 | 24 | use Tests\Tempest\Fixtures\Modules\Books\Models\Author; |
24 | 25 | use Tests\Tempest\Fixtures\Modules\Books\Models\Book; |
25 | 26 | use Tests\Tempest\Integration\FrameworkIntegrationTestCase; |
| 27 | + |
26 | 28 | use function Tempest\uri; |
27 | 29 |
|
28 | 30 | /** |
@@ -208,4 +210,41 @@ public function test_json_request(): void |
208 | 210 | $this->assertSame(Status::OK, $response->status); |
209 | 211 | $this->assertSame('foo', $response->body); |
210 | 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 | + } |
211 | 250 | } |
0 commit comments