|
12 | 12 | use MongoDB\Laravel\Tests\Models\Address; |
13 | 13 | use MongoDB\Laravel\Tests\Models\User; |
14 | 14 |
|
| 15 | +use MongoDB\Laravel\Relations\EmbedsMany; |
| 16 | +use MongoDB\Laravel\Relations\EmbedsOne; |
| 17 | + |
15 | 18 | use function array_merge; |
16 | 19 |
|
17 | 20 | class EmbeddedRelationsTest extends TestCase |
@@ -972,4 +975,44 @@ public function testUnsetPropertyOnEmbed() |
972 | 975 | $this->assertNull($user->addresses->get(0)->city); |
973 | 976 | $this->assertSame('Kyoto', $user->addresses->get(1)->city); |
974 | 977 | } |
| 978 | + |
| 979 | + public function testEmbedsManyIsPublic() |
| 980 | + { |
| 981 | + $user = User::create(['name' => 'John Doe']); |
| 982 | + $relation = $user->embedsMany(Address::class, 'addresses', 'user_id', 'addresses'); |
| 983 | + |
| 984 | + $this->assertInstanceOf(EmbedsMany::class, $relation); |
| 985 | + } |
| 986 | + |
| 987 | + public function testEmbedsOneIsPublic() |
| 988 | + { |
| 989 | + $user = User::create(['name' => 'John Doe']); |
| 990 | + $relation = $user->embedsOne(User::class, 'father', 'user_id', 'father'); |
| 991 | + |
| 992 | + $this->assertInstanceOf(EmbedsOne::class, $relation); |
| 993 | + } |
| 994 | + |
| 995 | + public function testResolveRelationUsingEmbedsMany() |
| 996 | + { |
| 997 | + User::resolveRelationUsing('dynamicAddresses', fn ($model) => $model->embedsMany(Address::class, 'addresses', 'user_id', 'dynamicAddresses')); |
| 998 | + |
| 999 | + $user = User::create(['name' => 'John Doe']); |
| 1000 | + $user->dynamicAddresses()->save(new Address(['city' => 'London'])); |
| 1001 | + |
| 1002 | + $user = User::find($user->id); |
| 1003 | + $this->assertCount(1, $user->dynamicAddresses); |
| 1004 | + $this->assertEquals('London', $user->dynamicAddresses->first()->city); |
| 1005 | + } |
| 1006 | + |
| 1007 | + public function testResolveRelationUsingEmbedsOne() |
| 1008 | + { |
| 1009 | + User::resolveRelationUsing('dynamicFather', fn ($model) => $model->embedsOne(User::class, 'father', 'user_id', 'dynamicFather')); |
| 1010 | + |
| 1011 | + $user = User::create(['name' => 'John Doe']); |
| 1012 | + $user->dynamicFather()->save(new User(['name' => 'Mark Doe'])); |
| 1013 | + |
| 1014 | + $user = User::find($user->id); |
| 1015 | + $this->assertNotNull($user->dynamicFather); |
| 1016 | + $this->assertEquals('Mark Doe', $user->dynamicFather->name); |
| 1017 | + } |
975 | 1018 | } |
0 commit comments