summaryrefslogtreecommitdiff
path: root/tests/Unit/RouteTest.php
diff options
context:
space:
mode:
authorSam Light <sam@lightscale.co.uk>2026-06-10 19:00:32 +0100
committerSam Light <sam@lightscale.co.uk>2026-06-10 19:00:32 +0100
commit5fe7c87967ff29c4a8f03a9186918d8359f4887e (patch)
treedfdd4fdc7a4e96266305f82f5846750ab2efabc9 /tests/Unit/RouteTest.php
parent01eac9658c3bc486d2d42a18557fdb82a536348e (diff)
big update
Diffstat (limited to 'tests/Unit/RouteTest.php')
-rw-r--r--tests/Unit/RouteTest.php48
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');