Skip to content

Commit cf24715

Browse files
committed
merge both new assertions to assertRelated
1 parent 11f4b0b commit cf24715

File tree

3 files changed

+14
-41
lines changed

3 files changed

+14
-41
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@ This will prevent any method name conflicts with core, your custom or other trai
136136
\Astrotomic\PhpunitAssertions\Laravel\ModelAssertions::assertExists($model);
137137
\Astrotomic\PhpunitAssertions\Laravel\ModelAssertions::assertSame($model, \App\Models\User::first());
138138
\Astrotomic\PhpunitAssertions\Laravel\ModelAssertions::assertRelated($post, $comment, 'comments');
139-
\Astrotomic\PhpunitAssertions\Laravel\ModelAssertions::assertRelationship($post, \App\Models\Comment::class, 'comments', \Illuminate\Database\Eloquent\Relations\HasMany::class);
139+
\Astrotomic\PhpunitAssertions\Laravel\ModelAssertions::assertRelated($post, \App\Models\Comment::class, 'comments', \Illuminate\Database\Eloquent\Relations\HasMany::class);
140140
```
141141

142142
### Blade

src/Laravel/ModelAssertions.php

Lines changed: 5 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -44,28 +44,13 @@ public static function assertSame(Model $expected, $actual): void
4444
PHPUnit::assertTrue($expected->is($actual));
4545
}
4646

47-
/**
48-
* @param \Illuminate\Database\Eloquent\Model $model
49-
* @param string $relation
50-
* @param \Illuminate\Database\Eloquent\Model|mixed $actual
51-
*/
52-
public static function assertRelated(Model $model, string $relation, $actual)
53-
{
54-
PHPUnit::assertInstanceOf(Model::class, $actual);
55-
PHPUnit::assertTrue(method_exists($model, $relation));
56-
PHPUnit::assertInstanceOf(Relation::class, $model->$relation());
57-
58-
$related = $model->$relation()->whereKey($actual->getKey())->first();
59-
self::assertSame($actual, $related);
60-
}
61-
6247
/**
6348
* @param \Illuminate\Database\Eloquent\Model $model
6449
* @param string $relation
6550
* @param string|\Illuminate\Database\Eloquent\Model|mixed $actual
6651
* @param string|null $type
6752
*/
68-
public static function assertRelationship(Model $model, string $relation, $actual, ?string $type = null)
53+
public static function assertRelated(Model $model, string $relation, $actual, ?string $type = null)
6954
{
7055
PHPUnit::assertTrue(method_exists($model, $relation));
7156
PHPUnit::assertInstanceOf(Relation::class, $model->$relation());
@@ -81,7 +66,10 @@ public static function assertRelationship(Model $model, string $relation, $actua
8166
PHPUnit::assertInstanceOf($actual, $related);
8267
} else {
8368
PHPUnit::assertInstanceOf(get_class($actual), $related);
84-
self::assertRelated($model, $relation, $actual);
69+
self::assertSame(
70+
$actual,
71+
$model->$relation()->whereKey($actual->getKey())->first()
72+
);
8573
}
8674
}
8775
}

tests/Laravel/ModelAssertionsTest.php

Lines changed: 8 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ public function it_can_validate_same(): void
4848
* @test
4949
* @dataProvider hundredTimes
5050
*/
51-
public function it_can_validate_related(): void
51+
public function it_can_validate_relationship(): void
5252
{
5353
$post = Post::create([
5454
'title' => self::randomString(),
@@ -59,31 +59,16 @@ public function it_can_validate_related(): void
5959
'post_id' => $post->getKey(),
6060
]);
6161

62+
ModelAssertions::assertRelated($post, 'comments', Comment::class);
6263
ModelAssertions::assertRelated($post, 'comments', $comment);
63-
ModelAssertions::assertRelated($comment, 'post', $post);
64-
}
65-
66-
/**
67-
* @test
68-
* @dataProvider hundredTimes
69-
*/
70-
public function it_can_validate_relationship(): void
71-
{
72-
$post = Post::create([
73-
'title' => self::randomString(),
74-
]);
7564

76-
$comment = Comment::create([
77-
'message' => self::randomString(),
78-
'post_id' => $post->getKey(),
79-
]);
65+
ModelAssertions::assertRelated($post, 'comments', Comment::class, HasMany::class);
66+
ModelAssertions::assertRelated($post, 'comments', $comment, HasMany::class);
8067

81-
ModelAssertions::assertRelationship($post, 'comments', Comment::class);
82-
ModelAssertions::assertRelationship($post, 'comments', Comment::class, HasMany::class);
83-
ModelAssertions::assertRelationship($post, 'comments', $comment, HasMany::class);
68+
ModelAssertions::assertRelated($comment, 'post', Post::class);
69+
ModelAssertions::assertRelated($comment, 'post', $post);
8470

85-
ModelAssertions::assertRelationship($comment, 'post', Post::class);
86-
ModelAssertions::assertRelationship($comment, 'post', Post::class, BelongsTo::class);
87-
ModelAssertions::assertRelationship($comment, 'post', $post, BelongsTo::class);
71+
ModelAssertions::assertRelated($comment, 'post', Post::class, BelongsTo::class);
72+
ModelAssertions::assertRelated($comment, 'post', $post, BelongsTo::class);
8873
}
8974
}

0 commit comments

Comments
 (0)