1010use Mockery ;
1111use MongoDB \BSON \ObjectId ;
1212use MongoDB \Laravel \Tests \Models \Address ;
13- use MongoDB \Laravel \Tests \Models \Book ;
14- use MongoDB \Laravel \Tests \Models \Client ;
15- use MongoDB \Laravel \Tests \Models \Group ;
16- use MongoDB \Laravel \Tests \Models \Item ;
17- use MongoDB \Laravel \Tests \Models \Photo ;
18- use MongoDB \Laravel \Tests \Models \Role ;
1913use MongoDB \Laravel \Tests \Models \User ;
2014
2115use function array_merge ;
@@ -25,14 +19,7 @@ class EmbeddedRelationsTest extends TestCase
2519 public function tearDown (): void
2620 {
2721 Mockery::close ();
28-
2922 User::truncate ();
30- Book::truncate ();
31- Item::truncate ();
32- Role::truncate ();
33- Client::truncate ();
34- Group::truncate ();
35- Photo::truncate ();
3623 }
3724
3825 public function testEmbedsManySave ()
@@ -951,4 +938,36 @@ public function testGetQueueableRelationsEmbedsOne()
951938 $ this ->assertEquals (['father ' ], $ user ->getQueueableRelations ());
952939 $ this ->assertEquals ([], $ user ->father ->getQueueableRelations ());
953940 }
941+
942+ public function testUnsetPropertyOnEmbed ()
943+ {
944+ $ user = User::create (['name ' => 'John Doe ' ]);
945+ $ user ->addresses ()->save (new Address (['city ' => 'New York ' ]));
946+ $ user ->addresses ()->save (new Address (['city ' => 'Tokyo ' ]));
947+
948+ // Set property
949+ $ user ->addresses ->first ()->city = 'Paris ' ;
950+ $ user ->addresses ->first ()->save ();
951+
952+ $ user = User::where ('name ' , 'John Doe ' )->first ();
953+ $ this ->assertSame ('Paris ' , $ user ->addresses ->get (0 )->city );
954+ $ this ->assertSame ('Tokyo ' , $ user ->addresses ->get (1 )->city );
955+
956+ // Unset property
957+ unset($ user ->addresses ->first ()->city );
958+ $ user ->addresses ->first ()->save ();
959+
960+ $ user = User::where ('name ' , 'John Doe ' )->first ();
961+ $ this ->assertNull ($ user ->addresses ->get (0 )->city );
962+ $ this ->assertSame ('Tokyo ' , $ user ->addresses ->get (1 )->city );
963+
964+ // Unset and reset property
965+ unset($ user ->addresses ->get (1 )->city );
966+ $ user ->addresses ->get (1 )->city = 'Kyoto ' ;
967+ $ user ->addresses ->get (1 )->save ();
968+
969+ $ user = User::where ('name ' , 'John Doe ' )->first ();
970+ $ this ->assertNull ($ user ->addresses ->get (0 )->city );
971+ $ this ->assertSame ('Kyoto ' , $ user ->addresses ->get (1 )->city );
972+ }
954973}
0 commit comments