Skip to content

Commit a8442ba

Browse files
committed
add tests for nested embedded models deletion
1 parent 79ea62d commit a8442ba

File tree

1 file changed

+50
-0
lines changed

1 file changed

+50
-0
lines changed

tests/EmbeddedRelationsTest.php

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)