summaryrefslogtreecommitdiff
path: root/tests/Unit/PathSegmentTest.php
diff options
context:
space:
mode:
Diffstat (limited to 'tests/Unit/PathSegmentTest.php')
-rw-r--r--tests/Unit/PathSegmentTest.php68
1 files changed, 68 insertions, 0 deletions
diff --git a/tests/Unit/PathSegmentTest.php b/tests/Unit/PathSegmentTest.php
new file mode 100644
index 0000000..1d19e0e
--- /dev/null
+++ b/tests/Unit/PathSegmentTest.php
@@ -0,0 +1,68 @@
+<?php
+
+declare(strict_types=1);
+
+use Lightscale\Router\PathSegment;
+
+it('initializes')
+ ->expect(fn () => new PathSegment('test'))
+ ->toBeInstanceOf(PathSegment::class);
+
+it('can get the content')
+ ->expect(fn () => (new PathSegment('test'))->getContent())
+ ->toBe('test');
+
+it('can get the parent')
+ ->expect(fn () => (new PathSegment(
+ 'test1',
+ new PathSegment('test2')
+ ))->getParent())
+ ->toBeInstanceOf(PathSegment::class)
+ ->getContent()->toBe('test2');
+
+it('has null parent by default')
+ ->expect(fn () => (new PathSegment('test'))->getParent())
+ ->toBeNull();
+
+$testChain = fn () => new PathSegment(
+ 'test3',
+ new PathSegment(
+ 'test2',
+ new PathSegment(
+ 'test1'
+ )
+ )
+);
+
+it('can get all ancestors')
+ ->expect(fn () => $testChain()->getAncestors())
+ ->toBeArray()
+ ->toContainOnlyInstancesOf(PathSegment::class)
+ ->toHaveCount(2);
+
+it('order all ancestors root first')
+ ->expect(fn () => $testChain()->getAncestors())
+ ->{0}->getContent()->toBe('test1')
+ ->{1}->getContent()->toBe('test2');
+
+it('can get all ancestors and self')
+ ->expect(fn () => $testChain()->getAncestorsAndSelf())
+ ->toBeArray()
+ ->toContainOnlyInstancesOf(PathSegment::class)
+ ->toHaveCount(3);
+
+it('order all ancestors and self root first')
+ ->expect(fn () => $testChain()->getAncestorsAndSelf())
+ ->{0}->getContent()->toBe('test1')
+ ->{1}->getContent()->toBe('test2')
+ ->{2}->getContent()->toBe('test3');
+
+it('can have children')->todo();
+
+it('can build full path')->todo();
+
+it('can have routes')->todo();
+
+it('can get routes by method')->todo();
+
+it('can get routes for all methods')->todo();