diff options
| author | Sam Light <sam@lightscale.co.uk> | 2026-06-10 19:00:32 +0100 |
|---|---|---|
| committer | Sam Light <sam@lightscale.co.uk> | 2026-06-10 19:00:32 +0100 |
| commit | 5fe7c87967ff29c4a8f03a9186918d8359f4887e (patch) | |
| tree | dfdd4fdc7a4e96266305f82f5846750ab2efabc9 /tests/Unit/RouteTest.php | |
| parent | 01eac9658c3bc486d2d42a18557fdb82a536348e (diff) | |
big update
Diffstat (limited to 'tests/Unit/RouteTest.php')
| -rw-r--r-- | tests/Unit/RouteTest.php | 48 |
1 files changed, 45 insertions, 3 deletions
diff --git a/tests/Unit/RouteTest.php b/tests/Unit/RouteTest.php index 0414649..104401b 100644 --- a/tests/Unit/RouteTest.php +++ b/tests/Unit/RouteTest.php @@ -3,14 +3,56 @@ declare(strict_types=1); use Lightscale\Router\Enums\HttpMethod; -use Lightscale\Router\Enums\SpecialSegment; +use Lightscale\Router\Enums\PathSegmentType; use Lightscale\Router\PathSegment; use Lightscale\Router\Route; +use Nyholm\Psr7\Factory\Psr17Factory; +use Psr\Http\Message\RequestInterface; it('initializes') ->expect(fn () => new Route( - new PathSegment(SpecialSegment::Root), HttpMethod::Get, - fn () => null + fn () => null, + new PathSegment(type: PathSegmentType::Root), )) ->toBeInstanceOf(Route::class); + +it('gets segment') + ->expect(fn () => (new Route( + HttpMethod::Get, + fn () => null, + new PathSegment(type: PathSegmentType::Root), + ))->getSegment()) + ->toBeInstanceOf(PathSegment::class); + +it('throws getting segment without being set', function () { + $r = new Route(HttpMethod::Get, fn () => null); + $r->getSegment(); +})->throws(Error::class); + +it('can set segment') + ->expect(function () { + $r = new Route(HttpMethod::Get, fn () => null); + $r->setSegment(new PathSegment('test')); + + return $r->getSegment(); + }) + ->toBeInstanceOf(PathSegment::class) + ->getValue()->toBe('test'); + +it('gets method') + ->expect(fn () => (new Route( + HttpMethod::Get, + fn () => null, + ))->getMethod()) + ->toBe(HttpMethod::Get); + +it('can call handler') + ->expect(fn () => (new Route( + HttpMethod::Get, + fn (RequestInterface $req) => $req->getUri()->getPath() + ))( + (new Psr17Factory())->createRequest(HttpMethod::Get->value, '/testing') + ) + ) + ->toBe('/testing'); |
