RelationsTest.php 19.1 KB
Newer Older
Jens Segers's avatar
Jens Segers committed
1 2
<?php

Jens Segers's avatar
Jens Segers committed
3 4
class RelationsTest extends TestCase
{
unknown's avatar
unknown committed
5 6
    public function tearDown()
    {
7 8
        Mockery::close();

9
        User::truncate();
Jens Segers's avatar
Jens Segers committed
10 11
        Client::truncate();
        Address::truncate();
12 13 14 15
        Book::truncate();
        Item::truncate();
        Role::truncate();
        Client::truncate();
16
        Group::truncate();
Jens Segers's avatar
Jens Segers committed
17
        Photo::truncate();
unknown's avatar
unknown committed
18 19
    }

20
    public function testHasMany()
unknown's avatar
unknown committed
21
    {
22 23 24
        $author = User::create(['name' => 'George R. R. Martin']);
        Book::create(['title' => 'A Game of Thrones', 'author_id' => $author->_id]);
        Book::create(['title' => 'A Clash of Kings', 'author_id' => $author->_id]);
unknown's avatar
unknown committed
25

26
        $books = $author->books;
Gabriel Caruso's avatar
Gabriel Caruso committed
27
        $this->assertCount(2, $books);
unknown's avatar
unknown committed
28

29 30 31 32 33
        $user = User::create(['name' => 'John Doe']);
        Item::create(['type' => 'knife', 'user_id' => $user->_id]);
        Item::create(['type' => 'shield', 'user_id' => $user->_id]);
        Item::create(['type' => 'sword', 'user_id' => $user->_id]);
        Item::create(['type' => 'bag', 'user_id' => null]);
unknown's avatar
unknown committed
34

35
        $items = $user->items;
Gabriel Caruso's avatar
Gabriel Caruso committed
36
        $this->assertCount(3, $items);
37
    }
unknown's avatar
unknown committed
38 39 40

    public function testBelongsTo()
    {
41 42 43
        $user = User::create(['name' => 'George R. R. Martin']);
        Book::create(['title' => 'A Game of Thrones', 'author_id' => $user->_id]);
        $book = Book::create(['title' => 'A Clash of Kings', 'author_id' => $user->_id]);
unknown's avatar
unknown committed
44

45 46
        $author = $book->author;
        $this->assertEquals('George R. R. Martin', $author->name);
unknown's avatar
unknown committed
47

48 49
        $user = User::create(['name' => 'John Doe']);
        $item = Item::create(['type' => 'sword', 'user_id' => $user->_id]);
unknown's avatar
unknown committed
50

51 52
        $owner = $item->user;
        $this->assertEquals('John Doe', $owner->name);
Jens Segers's avatar
Jens Segers committed
53 54

        $book = Book::create(['title' => 'A Clash of Kings']);
Gabriel Caruso's avatar
Gabriel Caruso committed
55
        $this->assertNull($book->author);
unknown's avatar
unknown committed
56 57 58 59
    }

    public function testHasOne()
    {
60 61
        $user = User::create(['name' => 'John Doe']);
        Role::create(['type' => 'admin', 'user_id' => $user->_id]);
unknown's avatar
unknown committed
62

63 64
        $role = $user->role;
        $this->assertEquals('admin', $role->type);
Jens Segers's avatar
Jens Segers committed
65 66
        $this->assertEquals($user->_id, $role->user_id);

67 68
        $user = User::create(['name' => 'Jane Doe']);
        $role = new Role(['type' => 'user']);
Jens Segers's avatar
Jens Segers committed
69 70 71 72 73 74 75 76 77 78
        $user->role()->save($role);

        $role = $user->role;
        $this->assertEquals('user', $role->type);
        $this->assertEquals($user->_id, $role->user_id);

        $user = User::where('name', 'Jane Doe')->first();
        $role = $user->role;
        $this->assertEquals('user', $role->type);
        $this->assertEquals($user->_id, $role->user_id);
unknown's avatar
unknown committed
79 80 81 82
    }

    public function testWithBelongsTo()
    {
83 84 85 86 87
        $user = User::create(['name' => 'John Doe']);
        Item::create(['type' => 'knife', 'user_id' => $user->_id]);
        Item::create(['type' => 'shield', 'user_id' => $user->_id]);
        Item::create(['type' => 'sword', 'user_id' => $user->_id]);
        Item::create(['type' => 'bag', 'user_id' => null]);
88

Alexandre Butynski's avatar
Alexandre Butynski committed
89
        $items = Item::with('user')->orderBy('user_id', 'desc')->get();
90 91 92 93

        $user = $items[0]->getRelation('user');
        $this->assertInstanceOf('User', $user);
        $this->assertEquals('John Doe', $user->name);
Gabriel Caruso's avatar
Gabriel Caruso committed
94 95
        $this->assertCount(1, $items[0]->getRelations());
        $this->assertNull($items[3]->getRelation('user'));
unknown's avatar
unknown committed
96 97 98 99
    }

    public function testWithHashMany()
    {
100 101 102 103 104
        $user = User::create(['name' => 'John Doe']);
        Item::create(['type' => 'knife', 'user_id' => $user->_id]);
        Item::create(['type' => 'shield', 'user_id' => $user->_id]);
        Item::create(['type' => 'sword', 'user_id' => $user->_id]);
        Item::create(['type' => 'bag', 'user_id' => null]);
unknown's avatar
unknown committed
105

106
        $user = User::with('items')->find($user->_id);
unknown's avatar
unknown committed
107

108
        $items = $user->getRelation('items');
Gabriel Caruso's avatar
Gabriel Caruso committed
109
        $this->assertCount(3, $items);
110
        $this->assertInstanceOf('Item', $items[0]);
unknown's avatar
unknown committed
111 112 113 114
    }

    public function testWithHasOne()
    {
115 116 117
        $user = User::create(['name' => 'John Doe']);
        Role::create(['type' => 'admin', 'user_id' => $user->_id]);
        Role::create(['type' => 'guest', 'user_id' => $user->_id]);
unknown's avatar
unknown committed
118

119
        $user = User::with('role')->find($user->_id);
unknown's avatar
unknown committed
120

121 122 123
        $role = $user->getRelation('role');
        $this->assertInstanceOf('Role', $role);
        $this->assertEquals('admin', $role->type);
unknown's avatar
unknown committed
124 125 126 127
    }

    public function testEasyRelation()
    {
128
        // Has Many
129 130
        $user = User::create(['name' => 'John Doe']);
        $item = Item::create(['type' => 'knife']);
131 132 133 134
        $user->items()->save($item);

        $user = User::find($user->_id);
        $items = $user->items;
Gabriel Caruso's avatar
Gabriel Caruso committed
135
        $this->assertCount(1, $items);
136
        $this->assertInstanceOf('Item', $items[0]);
Jens Segers's avatar
Jens Segers committed
137
        $this->assertEquals($user->_id, $items[0]->user_id);
138 139

        // Has one
140 141
        $user = User::create(['name' => 'John Doe']);
        $role = Role::create(['type' => 'admin']);
142 143 144 145 146 147
        $user->role()->save($role);

        $user = User::find($user->_id);
        $role = $user->role;
        $this->assertInstanceOf('Role', $role);
        $this->assertEquals('admin', $role->type);
Jens Segers's avatar
Jens Segers committed
148
        $this->assertEquals($user->_id, $role->user_id);
149 150
    }

151
    public function testBelongsToMany()
152
    {
153
        $user = User::create(['name' => 'John Doe']);
154

155
        // Add 2 clients
156 157
        $user->clients()->save(new Client(['name' => 'Pork Pies Ltd.']));
        $user->clients()->create(['name' => 'Buffet Bar Inc.']);
158

159
        // Refetch
160 161 162
        $user = User::with('clients')->find($user->_id);
        $client = Client::with('users')->first();

163
        // Check for relation attributes
Gabriel Caruso's avatar
Gabriel Caruso committed
164 165
        $this->assertArrayHasKey('user_ids', $client->getAttributes());
        $this->assertArrayHasKey('client_ids', $user->getAttributes());
166

167
        $clients = $user->getRelation('clients');
168
        $users = $client->getRelation('users');
169 170 171

        $this->assertInstanceOf('Illuminate\Database\Eloquent\Collection', $users);
        $this->assertInstanceOf('Illuminate\Database\Eloquent\Collection', $clients);
172 173
        $this->assertInstanceOf('Client', $clients[0]);
        $this->assertInstanceOf('User', $users[0]);
174 175 176 177
        $this->assertCount(2, $user->clients);
        $this->assertCount(1, $client->users);

        // Now create a new user to an existing client
178
        $user = $client->users()->create(['name' => 'Jane Doe']);
179

Jens Segers's avatar
Jens Segers committed
180 181 182
        $this->assertInstanceOf('Illuminate\Database\Eloquent\Collection', $user->clients);
        $this->assertInstanceOf('Client', $user->clients->first());
        $this->assertCount(1, $user->clients);
183

Jens Segers's avatar
Jens Segers committed
184
        // Get user and unattached client
185 186 187 188 189 190 191 192
        $user = User::where('name', '=', 'Jane Doe')->first();
        $client = Client::Where('name', '=', 'Buffet Bar Inc.')->first();

        // Check the models are what they should be
        $this->assertInstanceOf('Client', $client);
        $this->assertInstanceOf('User', $user);

        // Assert they are not attached
Gabriel Caruso's avatar
Gabriel Caruso committed
193 194
        $this->assertNotContains($client->_id, $user->client_ids);
        $this->assertNotContains($user->_id, $client->user_ids);
Jens Segers's avatar
Jens Segers committed
195 196
        $this->assertCount(1, $user->clients);
        $this->assertCount(1, $client->users);
197 198 199 200 201 202 203 204 205

        // Attach the client to the user
        $user->clients()->attach($client);

        // Get the new user model
        $user = User::where('name', '=', 'Jane Doe')->first();
        $client = Client::Where('name', '=', 'Buffet Bar Inc.')->first();

        // Assert they are attached
Gabriel Caruso's avatar
Gabriel Caruso committed
206 207
        $this->assertContains($client->_id, $user->client_ids);
        $this->assertContains($user->_id, $client->user_ids);
Jens Segers's avatar
Jens Segers committed
208 209 210 211
        $this->assertCount(2, $user->clients);
        $this->assertCount(2, $client->users);

        // Detach clients from user
212
        $user->clients()->sync([]);
Jens Segers's avatar
Jens Segers committed
213 214 215 216 217 218

        // Get the new user model
        $user = User::where('name', '=', 'Jane Doe')->first();
        $client = Client::Where('name', '=', 'Buffet Bar Inc.')->first();

        // Assert they are not attached
Gabriel Caruso's avatar
Gabriel Caruso committed
219 220
        $this->assertNotContains($client->_id, $user->client_ids);
        $this->assertNotContains($user->_id, $client->user_ids);
Jens Segers's avatar
Jens Segers committed
221 222
        $this->assertCount(0, $user->clients);
        $this->assertCount(1, $client->users);
223 224
    }

225
    public function testBelongsToManyAttachesExistingModels()
226
    {
227
        $user = User::create(['name' => 'John Doe', 'client_ids' => ['1234523']]);
228

229 230
        $clients = [
            Client::create(['name' => 'Pork Pies Ltd.'])->_id,
Jens Segers's avatar
Jens Segers committed
231
            Client::create(['name' => 'Buffet Bar Inc.'])->_id,
232
        ];
233

234 235
        $moreClients = [
            Client::create(['name' => 'synced Boloni Ltd.'])->_id,
Jens Segers's avatar
Jens Segers committed
236
            Client::create(['name' => 'synced Meatballs Inc.'])->_id,
237
        ];
238 239 240 241 242 243 244

        // Sync multiple records
        $user->clients()->sync($clients);

        $user = User::with('clients')->find($user->_id);

        // Assert non attached ID's are detached succesfully
Gabriel Caruso's avatar
Gabriel Caruso committed
245
        $this->assertNotContains('1234523', $user->client_ids);
246 247 248 249

        // Assert there are two client objects in the relationship
        $this->assertCount(2, $user->clients);

Jens Segers's avatar
Jens Segers committed
250
        // Add more clients
251 252
        $user->clients()->sync($moreClients);

253
        // Refetch
254 255
        $user = User::with('clients')->find($user->_id);

unknown's avatar
unknown committed
256 257
        // Assert there are now still 2 client objects in the relationship
        $this->assertCount(2, $user->clients);
258 259 260 261 262 263

        // Assert that the new relationships name start with synced
        $this->assertStringStartsWith('synced', $user->clients[0]->name);
        $this->assertStringStartsWith('synced', $user->clients[1]->name);
    }

Jens Segers's avatar
Jens Segers committed
264 265 266
    public function testBelongsToManySync()
    {
        // create test instances
267 268 269
        $user = User::create(['name' => 'John Doe']);
        $client1 = Client::create(['name' => 'Pork Pies Ltd.'])->_id;
        $client2 = Client::create(['name' => 'Buffet Bar Inc.'])->_id;
Jens Segers's avatar
Jens Segers committed
270 271

        // Sync multiple
272
        $user->clients()->sync([$client1, $client2]);
Jens Segers's avatar
Jens Segers committed
273 274 275 276 277 278
        $this->assertCount(2, $user->clients);

        // Refresh user
        $user = User::where('name', '=', 'John Doe')->first();

        // Sync single
279
        $user->clients()->sync([$client1]);
Jens Segers's avatar
Jens Segers committed
280 281 282
        $this->assertCount(1, $user->clients);
    }

Jens Segers's avatar
Jens Segers committed
283 284
    public function testBelongsToManyAttachArray()
    {
285 286 287
        $user = User::create(['name' => 'John Doe']);
        $client1 = Client::create(['name' => 'Test 1'])->_id;
        $client2 = Client::create(['name' => 'Test 2'])->_id;
Jens Segers's avatar
Jens Segers committed
288 289 290 291 292 293

        $user = User::where('name', '=', 'John Doe')->first();
        $user->clients()->attach([$client1, $client2]);
        $this->assertCount(2, $user->clients);
    }

294 295 296 297 298 299 300 301 302 303 304 305
    public function testBelongsToManyAttachEloquentCollection()
    {
        $user = User::create(['name' => 'John Doe']);
        $client1 = Client::create(['name' => 'Test 1']);
        $client2 = Client::create(['name' => 'Test 2']);
        $collection = new \Illuminate\Database\Eloquent\Collection([$client1, $client2]);

        $user = User::where('name', '=', 'John Doe')->first();
        $user->clients()->attach($collection);
        $this->assertCount(2, $user->clients);
    }

Jens Segers's avatar
Jens Segers committed
306 307
    public function testBelongsToManySyncAlreadyPresent()
    {
308 309 310
        $user = User::create(['name' => 'John Doe']);
        $client1 = Client::create(['name' => 'Test 1'])->_id;
        $client2 = Client::create(['name' => 'Test 2'])->_id;
Jens Segers's avatar
Jens Segers committed
311 312 313 314 315 316 317 318 319 320 321 322

        $user->clients()->sync([$client1, $client2]);
        $this->assertCount(2, $user->clients);

        $user = User::where('name', '=', 'John Doe')->first();
        $user->clients()->sync([$client1]);
        $this->assertCount(1, $user->clients);

        $user = User::where('name', '=', 'John Doe')->first()->toArray();
        $this->assertCount(1, $user['client_ids']);
    }

323 324
    public function testBelongsToManyCustom()
    {
325 326
        $user = User::create(['name' => 'John Doe']);
        $group = $user->groups()->create(['name' => 'Admins']);
327 328 329 330 331 332

        // Refetch
        $user = User::find($user->_id);
        $group = Group::find($group->_id);

        // Check for custom relation attributes
Gabriel Caruso's avatar
Gabriel Caruso committed
333 334
        $this->assertArrayHasKey('users', $group->getAttributes());
        $this->assertArrayHasKey('groups', $user->getAttributes());
335 336

        // Assert they are attached
Gabriel Caruso's avatar
Gabriel Caruso committed
337 338
        $this->assertContains($group->_id, $user->groups->pluck('_id')->toArray());
        $this->assertContains($user->_id, $group->users->pluck('_id')->toArray());
339 340
        $this->assertEquals($group->_id, $user->groups()->first()->_id);
        $this->assertEquals($user->_id, $group->users()->first()->_id);
unknown's avatar
unknown committed
341
    }
Jens Segers's avatar
Jens Segers committed
342 343 344

    public function testMorph()
    {
345 346
        $user = User::create(['name' => 'John Doe']);
        $client = Client::create(['name' => 'Jane Doe']);
Jens Segers's avatar
Jens Segers committed
347

348
        $photo = Photo::create(['url' => 'http://graph.facebook.com/john.doe/picture']);
349 350
        $photo = $user->photos()->save($photo);

Jens Segers's avatar
Jens Segers committed
351 352 353
        $this->assertEquals(1, $user->photos->count());
        $this->assertEquals($photo->id, $user->photos->first()->id);

Jens Segers's avatar
Jens Segers committed
354 355 356 357
        $user = User::find($user->_id);
        $this->assertEquals(1, $user->photos->count());
        $this->assertEquals($photo->id, $user->photos->first()->id);

358
        $photo = Photo::create(['url' => 'http://graph.facebook.com/jane.doe/picture']);
Jens Segers's avatar
Jens Segers committed
359
        $client->photo()->save($photo);
Jens Segers's avatar
Jens Segers committed
360

Jens Segers's avatar
Jens Segers committed
361 362
        $this->assertNotNull($client->photo);
        $this->assertEquals($photo->id, $client->photo->id);
Jens Segers's avatar
Jens Segers committed
363 364

        $client = Client::find($client->_id);
Jens Segers's avatar
Jens Segers committed
365 366
        $this->assertNotNull($client->photo);
        $this->assertEquals($photo->id, $client->photo->id);
Jens Segers's avatar
Jens Segers committed
367 368 369

        $photo = Photo::first();
        $this->assertEquals($photo->imageable->name, $user->name);
Jens Segers's avatar
Jens Segers committed
370 371 372

        $user = User::with('photos')->find($user->_id);
        $relations = $user->getRelations();
Gabriel Caruso's avatar
Gabriel Caruso committed
373
        $this->assertArrayHasKey('photos', $relations);
Jens Segers's avatar
Jens Segers committed
374
        $this->assertEquals(1, $relations['photos']->count());
375 376 377

        $photos = Photo::with('imageable')->get();
        $relations = $photos[0]->getRelations();
Gabriel Caruso's avatar
Gabriel Caruso committed
378
        $this->assertArrayHasKey('imageable', $relations);
379
        $this->assertInstanceOf('User', $photos[0]->imageable);
380 381

        $relations = $photos[1]->getRelations();
Gabriel Caruso's avatar
Gabriel Caruso committed
382
        $this->assertArrayHasKey('imageable', $relations);
383
        $this->assertInstanceOf('Client', $photos[1]->imageable);
384
    }
385

386 387
    public function testHasManyHas()
    {
388 389 390 391 392 393 394
        $author1 = User::create(['name' => 'George R. R. Martin']);
        $author1->books()->create(['title' => 'A Game of Thrones', 'rating' => 5]);
        $author1->books()->create(['title' => 'A Clash of Kings', 'rating' => 5]);
        $author2 = User::create(['name' => 'John Doe']);
        $author2->books()->create(['title' => 'My book', 'rating' => 2]);
        User::create(['name' => 'Anonymous author']);
        Book::create(['title' => 'Anonymous book', 'rating' => 1]);
395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424

        $authors = User::has('books')->get();
        $this->assertCount(2, $authors);
        $this->assertEquals('George R. R. Martin', $authors[0]->name);
        $this->assertEquals('John Doe', $authors[1]->name);

        $authors = User::has('books', '>', 1)->get();
        $this->assertCount(1, $authors);

        $authors = User::has('books', '<', 5)->get();
        $this->assertCount(3, $authors);

        $authors = User::has('books', '>=', 2)->get();
        $this->assertCount(1, $authors);

        $authors = User::has('books', '<=', 1)->get();
        $this->assertCount(2, $authors);

        $authors = User::has('books', '=', 2)->get();
        $this->assertCount(1, $authors);

        $authors = User::has('books', '!=', 2)->get();
        $this->assertCount(2, $authors);

        $authors = User::has('books', '=', 0)->get();
        $this->assertCount(1, $authors);

        $authors = User::has('books', '!=', 0)->get();
        $this->assertCount(2, $authors);

Jens Segers's avatar
Jens Segers committed
425
        $authors = User::whereHas('books', function ($query) {
426 427 428 429
            $query->where('rating', 5);
        })->get();
        $this->assertCount(1, $authors);

Jens Segers's avatar
Jens Segers committed
430
        $authors = User::whereHas('books', function ($query) {
431 432 433 434 435 436 437
            $query->where('rating', '<', 5);
        })->get();
        $this->assertCount(1, $authors);
    }

    public function testHasOneHas()
    {
438 439 440 441 442 443
        $user1 = User::create(['name' => 'John Doe']);
        $user1->role()->create(['title' => 'admin']);
        $user2 = User::create(['name' => 'Jane Doe']);
        $user2->role()->create(['title' => 'reseller']);
        User::create(['name' => 'Mark Moe']);
        Role::create(['title' => 'Customer']);
444 445

        $users = User::has('role')->get();
446

447 448 449 450 451 452 453 454 455 456 457
        $this->assertCount(2, $users);
        $this->assertEquals('John Doe', $users[0]->name);
        $this->assertEquals('Jane Doe', $users[1]->name);

        $users = User::has('role', '=', 0)->get();
        $this->assertCount(1, $users);

        $users = User::has('role', '!=', 0)->get();
        $this->assertCount(2, $users);
    }

Jens Segers's avatar
Jens Segers committed
458 459
    public function testNestedKeys()
    {
460 461
        $client = Client::create([
            'data' => [
Jens Segers's avatar
Jens Segers committed
462
                'client_id' => 35298,
Jens Segers's avatar
Jens Segers committed
463 464
                'name'      => 'John Doe',
            ],
465
        ]);
Jens Segers's avatar
Jens Segers committed
466

467 468
        $address = $client->addresses()->create([
            'data' => [
Jens Segers's avatar
Jens Segers committed
469
                'address_id' => 1432,
Jens Segers's avatar
Jens Segers committed
470 471
                'city'       => 'Paris',
            ],
472
        ]);
Jens Segers's avatar
Jens Segers committed
473 474 475 476 477 478

        $client = Client::where('data.client_id', 35298)->first();
        $this->assertEquals(1, $client->addresses->count());

        $address = $client->addresses->first();
        $this->assertEquals('Paris', $address->data['city']);
Jens Segers's avatar
Jens Segers committed
479 480 481

        $client = Client::with('addresses')->first();
        $this->assertEquals('Paris', $client->addresses->first()->data['city']);
Jens Segers's avatar
Jens Segers committed
482 483
    }

484
    public function testDoubleSaveOneToMany()
Jens Segers's avatar
Jens Segers committed
485
    {
486 487
        $author = User::create(['name' => 'George R. R. Martin']);
        $book = Book::create(['title' => 'A Game of Thrones']);
Jens Segers's avatar
Jens Segers committed
488 489 490 491 492

        $author->books()->save($book);
        $author->books()->save($book);
        $author->save();
        $this->assertEquals(1, $author->books()->count());
493
        $this->assertEquals($author->_id, $book->author_id);
Jens Segers's avatar
Jens Segers committed
494 495

        $author = User::where('name', 'George R. R. Martin')->first();
496
        $book = Book::where('title', 'A Game of Thrones')->first();
Jens Segers's avatar
Jens Segers committed
497
        $this->assertEquals(1, $author->books()->count());
498
        $this->assertEquals($author->_id, $book->author_id);
Jens Segers's avatar
Jens Segers committed
499 500 501 502 503

        $author->books()->save($book);
        $author->books()->save($book);
        $author->save();
        $this->assertEquals(1, $author->books()->count());
504 505 506 507 508
        $this->assertEquals($author->_id, $book->author_id);
    }

    public function testDoubleSaveManyToMany()
    {
509 510
        $user = User::create(['name' => 'John Doe']);
        $client = Client::create(['name' => 'Admins']);
511 512 513 514 515 516

        $user->clients()->save($client);
        $user->clients()->save($client);
        $user->save();

        $this->assertEquals(1, $user->clients()->count());
517 518
        $this->assertEquals([$user->_id], $client->user_ids);
        $this->assertEquals([$client->_id], $user->client_ids);
519 520 521 522

        $user = User::where('name', 'John Doe')->first();
        $client = Client::where('name', 'Admins')->first();
        $this->assertEquals(1, $user->clients()->count());
523 524
        $this->assertEquals([$user->_id], $client->user_ids);
        $this->assertEquals([$client->_id], $user->client_ids);
525 526 527 528 529

        $user->clients()->save($client);
        $user->clients()->save($client);
        $user->save();
        $this->assertEquals(1, $user->clients()->count());
530 531
        $this->assertEquals([$user->_id], $client->user_ids);
        $this->assertEquals([$client->_id], $user->client_ids);
Jens Segers's avatar
Jens Segers committed
532
    }
533
}