diff --git a/tests/ModelTest.php b/tests/ModelTest.php index 44e24b699..9d6acb127 100644 --- a/tests/ModelTest.php +++ b/tests/ModelTest.php @@ -114,6 +114,14 @@ 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 diff --git a/tests/Models/Soft.php b/tests/Models/Soft.php index 31b80908a..763aafb41 100644 --- a/tests/Models/Soft.php +++ b/tests/Models/Soft.php @@ -25,4 +25,9 @@ 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..156e656bd 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 @@ -50,6 +51,24 @@ public function testHasMany(): void $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 { $user = User::create(['name' => 'George R. R. Martin']);