|
15 | 15 |
|
16 | 16 | class RelationTest extends TestCase |
17 | 17 | { |
18 | | - public function testIncluded() |
| 18 | + public function resourceProvider(): array |
| 19 | + { |
| 20 | + return [ |
| 21 | + [[]], |
| 22 | + [new class {}], |
| 23 | + [new class extends Model {}], |
| 24 | + ]; |
| 25 | + } |
| 26 | + |
| 27 | + /** |
| 28 | + * @dataProvider resourceProvider |
| 29 | + */ |
| 30 | + public function testIncluded($model) |
19 | 31 | { |
20 | 32 | $stub = new RelationOne(UserResource::class, fn() => null); |
21 | 33 |
|
22 | | - $relation = $stub->resolveFor(new Request, new class extends Model { |
23 | | - }, 'null'); |
| 34 | + $relation = $stub->resolveFor(new Request, $model, 'null'); |
24 | 35 |
|
25 | 36 | $this->assertInstanceOf(Relationship::class, $relation); |
26 | 37 | $this->assertFalse(Reflect::get($relation, 'whenIncluded')); |
27 | 38 |
|
28 | 39 | $stub->whenIncluded(); |
29 | | - $relation = $stub->resolveFor(new Request, new class extends Model { |
30 | | - }, 'null'); |
| 40 | + $relation = $stub->resolveFor(new Request, $model, 'null'); |
31 | 41 |
|
32 | 42 | $this->assertInstanceOf(Relationship::class, $relation); |
33 | 43 | $this->assertTrue(Reflect::get($relation, 'whenIncluded')); |
34 | 44 | } |
35 | 45 |
|
36 | | - public function testMeta() |
| 46 | + |
| 47 | + /** |
| 48 | + * @dataProvider resourceProvider |
| 49 | + */ |
| 50 | + public function testMeta($model) |
37 | 51 | { |
38 | 52 | $stub = new RelationOne(UserResource::class, fn() => null); |
39 | 53 |
|
40 | | - $relation = $stub->resolveFor(new Request, new class extends Model { |
41 | | - }, 'null'); |
| 54 | + $relation = $stub->resolveFor(new Request, $model, 'null'); |
42 | 55 |
|
43 | 56 | $this->assertInstanceOf(Relationship::class, $relation); |
44 | 57 | $this->assertEmpty(Reflect::get($relation, 'meta')); |
45 | 58 |
|
46 | 59 | $stub->meta(fn() => ['test']); |
47 | | - $relation = $stub->resolveFor(new Request, new class extends Model { |
48 | | - }, 'null'); |
| 60 | + $relation = $stub->resolveFor(new Request, $model, 'null'); |
49 | 61 |
|
50 | 62 | $this->assertInstanceOf(Relationship::class, $relation); |
51 | 63 | $this->assertInstanceOf(\Closure::class, Reflect::get($relation, 'meta')); |
52 | 64 | $this->assertEquals(['test'], Reflect::get($relation, 'meta')()); |
53 | 65 | } |
54 | 66 |
|
55 | | - public function testLinks() |
| 67 | + /** |
| 68 | + * @dataProvider resourceProvider |
| 69 | + */ |
| 70 | + public function testLinks($model) |
56 | 71 | { |
57 | 72 | $stub = new RelationOne(UserResource::class, fn() => null); |
58 | 73 |
|
59 | | - $relation = $stub->resolveFor(new Request, new class extends Model { |
60 | | - }, 'null'); |
| 74 | + $relation = $stub->resolveFor(new Request, $model, 'null'); |
61 | 75 |
|
62 | 76 | $this->assertInstanceOf(Relationship::class, $relation); |
63 | 77 | $this->assertEmpty(Reflect::get($relation, 'links')); |
64 | 78 |
|
65 | 79 | $stub->links(fn() => ['test']); |
66 | | - $relation = $stub->resolveFor(new Request, new class extends Model { |
67 | | - }, 'null'); |
| 80 | + $relation = $stub->resolveFor(new Request, $model, 'null'); |
68 | 81 |
|
69 | 82 | $this->assertInstanceOf(Relationship::class, $relation); |
70 | 83 | $this->assertInstanceOf(\Closure::class, Reflect::get($relation, 'links')); |
@@ -120,12 +133,13 @@ public function testWhenPivotLoaded($expectedAttr, $relation, $invokedAttr) |
120 | 133 | $this->assertTrue($check); |
121 | 134 | } |
122 | 135 |
|
123 | | - public function testRelationMissing() |
| 136 | + /** |
| 137 | + * @dataProvider resourceProvider |
| 138 | + */ |
| 139 | + public function testRelationMissing($model) |
124 | 140 | { |
125 | 141 | $missing = RelationMissing::fromRelationship(new Relationship(UserResource::class, fn() => null)); |
126 | 142 |
|
127 | | - $model = new class extends Model { |
128 | | - }; |
129 | 143 | $check = Reflect::invoke($missing, 'check', new Request, $model, 'any'); |
130 | 144 | $value = Reflect::invoke($missing, 'valueFor', new Request, $model, 'any'); |
131 | 145 |
|
|
0 commit comments