blob: 3b17f1900aed603977d48047fa54366e11bb8d52 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
|
<?php
declare(strict_types=1);
use Lightscale\Router\Group;
use Lightscale\Router\GroupDefinition;
use Lightscale\Router\Router;
use Lightscale\Router\Test\Utils\TestCallable;
$make = fn(?Group $parent = null, ...$args) => new Group(new Router, $parent, ...$args);
it('initializes with null defaults')
->expect(fn() => $make())
->toBeInstanceOf(Group::class)
->getName()->toBeNull()
->getPrefix()->toBeNull();
it('initializes with values')
->expect(new Group(new Router, null, '/test-path', 'test-name'))
->toBeInstanceOf(Group::class)
->getName()->toBe('test-name')
->getPrefix()->toBe('/test-path');
it('can set/get prefix')
->expect(fn() => $make()->prefix('/test'))
->toBeInstanceOf(Group::class)
->getPrefix()->toBe('/test');
it('can set/get name')
->expect(fn() => $make()->name('test'))
->toBeInstanceOf(Group::class)
->getName()->toBe('test');
it('calls group call back with definition', function () use ($make) {
$cb = TestCallable::make(fn() => null);
$make()->group($cb);
$cb->assertCalled();
$call = $cb->getLastCall();
expect($call?->args)->{0}->toBeInstanceOf(GroupDefinition::class);
});
it('can have a parent')
->expect(fn () => $make($make())->getParent())
->toBeInstanceOf(Group::class);
it('can have a null parent')
->expect(fn () => $make(null)->getParent())
->toBeNull();
it('can get all ancestors')
->expect(fn () => $make($make($make()))->getAncestors())
->toBeArray()
->toContainOnlyInstancesOf(Group::class)
->toHaveCount(2);
it('order all ancestors root first', function () use($make) {
$g3 = $make($g2 = $make($g1 = $make()));
expect($g3->getAncestors())
->toHaveCount(2)
->{0}->toBe($g1)
->{1}->toBe($g2);
});
it('can get all ancestors and self')
->expect(fn () => $make($make($make()))->getAncestorsAndSelf())
->toBeArray()
->toContainOnlyInstancesOf(Group::class)
->toHaveCount(3);
it('order all ancestors and self root first', function () use($make) {
$g3 = $make($g2 = $make($g1 = $make()));
expect($g3->getAncestorsAndSelf())
->toHaveCount(3)
->{0}->toBe($g1)
->{1}->toBe($g2)
->{2}->toBe($g3);
});
|