@@ -653,6 +653,56 @@ public function testNestedMixedEmbeds()
653653 $ this ->assertEquals ('Steve Doe ' , $ user ->father ->name );
654654 }
655655
656+ public function testNestedEmbedsOneDelete ()
657+ {
658+ $ user = User::create (['name ' => 'John Doe ' ]);
659+ $ father = $ user ->father ()->create (['name ' => 'Mark Doe ' ]);
660+ $ grandfather = $ father ->father ()->create (['name ' => 'Steve Doe ' ]);
661+ $ greatgrandfather = $ grandfather ->father ()->create (['name ' => 'Tom Doe ' ]);
662+
663+ $ grandfather ->delete ();
664+
665+ $ this ->assertNull ($ user ->father ->father );
666+
667+ $ user = User::where (['name ' => 'John Doe ' ])->first ();
668+ $ this ->assertNull ($ user ->father ->father );
669+ }
670+
671+ public function testNestedEmbedsManyDelete ()
672+ {
673+ $ user = User::create (['name ' => 'John Doe ' ]);
674+ $ country = $ user ->addresses ()->create (['country ' => 'France ' ]);
675+ $ city1 = $ country ->addresses ()->create (['city ' => 'Paris ' ]);
676+ $ city2 = $ country ->addresses ()->create (['city ' => 'Nice ' ]);
677+ $ city3 = $ country ->addresses ()->create (['city ' => 'Lyon ' ]);
678+
679+ $ city2 ->delete ();
680+
681+ $ this ->assertEquals (2 , $ user ->addresses ()->first ()->addresses ()->count ());
682+ $ this ->assertEquals ('Lyon ' , $ country ->addresses ()->last ()->city );
683+
684+ $ user = User::where ('name ' , 'John Doe ' )->first ();
685+ $ this ->assertEquals (2 , $ user ->addresses ()->first ()->addresses ()->count ());
686+ $ this ->assertEquals ('Lyon ' , $ country ->addresses ()->last ()->city );
687+ }
688+
689+ public function testNestedMixedEmbedsDelete ()
690+ {
691+ $ user = User::create (['name ' => 'John Doe ' ]);
692+ $ father = $ user ->father ()->create (['name ' => 'Mark Doe ' ]);
693+ $ country1 = $ father ->addresses ()->create (['country ' => 'France ' ]);
694+ $ country2 = $ father ->addresses ()->create (['country ' => 'Belgium ' ]);
695+
696+ $ country1 ->delete ();
697+
698+ $ this ->assertEquals (1 , $ user ->father ->addresses ()->count ());
699+ $ this ->assertEquals ('Belgium ' , $ user ->father ->addresses ()->last ()->country );
700+
701+ $ user = User::where ('name ' , 'John Doe ' )->first ();
702+ $ this ->assertEquals (1 , $ user ->father ->addresses ()->count ());
703+ $ this ->assertEquals ('Belgium ' , $ user ->father ->addresses ()->last ()->country );
704+ }
705+
656706 public function testDoubleAssociate ()
657707 {
658708 $ user = User::create (['name ' => 'John Doe ' ]);
0 commit comments