From 2cbad873e61b422708fbf30a4cd49b950e0861a4 Mon Sep 17 00:00:00 2001 From: Mohammad Mortazavi Date: Tue, 17 Oct 2023 16:15:37 +0330 Subject: [PATCH 1/4] Tests for new field on update; --- tests/ModelTest.php | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/tests/ModelTest.php b/tests/ModelTest.php index 44e24b699..0120f2248 100644 --- a/tests/ModelTest.php +++ b/tests/ModelTest.php @@ -83,6 +83,10 @@ public function testInsert(): void $this->assertEquals(35, $user->age); } + /** + * @return void + * @group hans + */ public function testUpdate(): void { $user = new User(); @@ -114,6 +118,15 @@ public function testUpdate(): void $check = User::find($user->_id); $this->assertEquals(20, $check->age); + + $check->age = 24; + $check->fullname = 'Hans Thomas'; // new field + $check->save(); + + $check = User::find($user->_id); + $this->assertEquals(24, $check->age); + $this->assertEquals('Hans Thomas', $check->fullname); + } public function testManualStringId(): void From 01a7b899736233f8f1170d7832c3c4ba2f79bdd9 Mon Sep 17 00:00:00 2001 From: Mohammad Mortazavi Date: Tue, 17 Oct 2023 16:56:36 +0330 Subject: [PATCH 2/4] Tests for HasMany relation with trashed items; --- tests/Models/Soft.php | 6 ++++++ tests/Models/User.php | 10 ++++++++++ tests/RelationsTest.php | 19 +++++++++++++++++++ 3 files changed, 35 insertions(+) diff --git a/tests/Models/Soft.php b/tests/Models/Soft.php index 31b80908a..4936898e8 100644 --- a/tests/Models/Soft.php +++ b/tests/Models/Soft.php @@ -25,4 +25,10 @@ public function prunable(): Builder { return $this->newQuery(); } + + public function user() + { + return $this->belongsTo(User::class); + } + } diff --git a/tests/Models/User.php b/tests/Models/User.php index 523b489e7..4e0d7294c 100644 --- a/tests/Models/User.php +++ b/tests/Models/User.php @@ -51,6 +51,16 @@ public function books() return $this->hasMany(Book::class, 'author_id'); } + public function softs() + { + return $this->hasMany(Soft::class); + } + + public function softsWithTrashed() + { + return $this->hasMany(Soft::class)->withTrashed(); + } + public function sqlBooks() { return $this->hasMany(SqlBook::class, 'author_id'); diff --git a/tests/RelationsTest.php b/tests/RelationsTest.php index 214c6f506..47458fd13 100644 --- a/tests/RelationsTest.php +++ b/tests/RelationsTest.php @@ -13,6 +13,7 @@ use MongoDB\Laravel\Tests\Models\Item; use MongoDB\Laravel\Tests\Models\Photo; use MongoDB\Laravel\Tests\Models\Role; +use MongoDB\Laravel\Tests\Models\Soft; use MongoDB\Laravel\Tests\Models\User; class RelationsTest extends TestCase @@ -49,6 +50,24 @@ public function testHasMany(): void $items = $user->items; $this->assertCount(3, $items); } + + public function testHasManyWithTrashed(): void + { + $user = User::create(['name' => 'George R. R. Martin']); + $first = Soft::create(['title' => 'A Game of Thrones', 'user_id' => $user->_id]); + $second = Soft::create(['title' => 'The Witcher', 'user_id' => $user->_id]); + + self::assertNull($first->deleted_at); + self::assertEquals($user->_id,$first->user->_id); + self::assertEquals([$first->_id,$second->_id],$user->softs->pluck('_id')->toArray()); + + $first->delete(); + $user->refresh(); + + self::assertNotNull($first->deleted_at); + self::assertEquals([$second->_id],$user->softs->pluck('_id')->toArray()); + self::assertEquals([$first->_id,$second->_id],$user->softsWithTrashed->pluck('_id')->toArray()); + } public function testBelongsTo(): void { From d60d00e6b93ebbded22ae95e725658582bb7e0ba Mon Sep 17 00:00:00 2001 From: Mohammad Mortazavi Date: Wed, 18 Oct 2023 18:43:54 +0330 Subject: [PATCH 3/4] Update ModelTest.php --- tests/ModelTest.php | 4 ---- 1 file changed, 4 deletions(-) diff --git a/tests/ModelTest.php b/tests/ModelTest.php index 0120f2248..58f9ce07d 100644 --- a/tests/ModelTest.php +++ b/tests/ModelTest.php @@ -83,10 +83,6 @@ public function testInsert(): void $this->assertEquals(35, $user->age); } - /** - * @return void - * @group hans - */ public function testUpdate(): void { $user = new User(); From ef42fe2f14175c600aa002444a24dfab3cf43312 Mon Sep 17 00:00:00 2001 From: Mohammad Mortazavi Date: Wed, 18 Oct 2023 18:50:50 +0330 Subject: [PATCH 4/4] Fix phpcs errors; --- tests/ModelTest.php | 3 +-- tests/Models/Soft.php | 1 - tests/RelationsTest.php | 14 +++++++------- 3 files changed, 8 insertions(+), 10 deletions(-) diff --git a/tests/ModelTest.php b/tests/ModelTest.php index 58f9ce07d..9d6acb127 100644 --- a/tests/ModelTest.php +++ b/tests/ModelTest.php @@ -115,14 +115,13 @@ public function testUpdate(): void $check = User::find($user->_id); $this->assertEquals(20, $check->age); - $check->age = 24; + $check->age = 24; $check->fullname = 'Hans Thomas'; // new field $check->save(); $check = User::find($user->_id); $this->assertEquals(24, $check->age); $this->assertEquals('Hans Thomas', $check->fullname); - } public function testManualStringId(): void diff --git a/tests/Models/Soft.php b/tests/Models/Soft.php index 4936898e8..763aafb41 100644 --- a/tests/Models/Soft.php +++ b/tests/Models/Soft.php @@ -30,5 +30,4 @@ public function user() { return $this->belongsTo(User::class); } - } diff --git a/tests/RelationsTest.php b/tests/RelationsTest.php index 47458fd13..156e656bd 100644 --- a/tests/RelationsTest.php +++ b/tests/RelationsTest.php @@ -50,23 +50,23 @@ public function testHasMany(): void $items = $user->items; $this->assertCount(3, $items); } - + public function testHasManyWithTrashed(): void { - $user = User::create(['name' => 'George R. R. Martin']); - $first = Soft::create(['title' => 'A Game of Thrones', 'user_id' => $user->_id]); + $user = User::create(['name' => 'George R. R. Martin']); + $first = Soft::create(['title' => 'A Game of Thrones', 'user_id' => $user->_id]); $second = Soft::create(['title' => 'The Witcher', 'user_id' => $user->_id]); self::assertNull($first->deleted_at); - self::assertEquals($user->_id,$first->user->_id); - self::assertEquals([$first->_id,$second->_id],$user->softs->pluck('_id')->toArray()); + self::assertEquals($user->_id, $first->user->_id); + self::assertEquals([$first->_id, $second->_id], $user->softs->pluck('_id')->toArray()); $first->delete(); $user->refresh(); self::assertNotNull($first->deleted_at); - self::assertEquals([$second->_id],$user->softs->pluck('_id')->toArray()); - self::assertEquals([$first->_id,$second->_id],$user->softsWithTrashed->pluck('_id')->toArray()); + self::assertEquals([$second->_id], $user->softs->pluck('_id')->toArray()); + self::assertEquals([$first->_id, $second->_id], $user->softsWithTrashed->pluck('_id')->toArray()); } public function testBelongsTo(): void