Skip to content

Commit 56eb5cb

Browse files
authored
Merge pull request #206 from D0nVitalio/master
Fix tests when $this->call(UsersTableSeeder::class) runs
2 parents 986430a + 55190e8 commit 56eb5cb

File tree

1 file changed

+19
-13
lines changed

1 file changed

+19
-13
lines changed

tests/Feature/NPlusOneQueriesTest.php

Lines changed: 19 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,13 @@ class NPlusOneQueriesTest extends TestCase
1515
protected $seed = true;
1616

1717
protected $usersCount = 10;
18-
protected $rolesCount = 3;
19-
protected $permissionsCount = 4;
18+
/**
19+
* @var int in case UsersTableSeeder seeds your users,
20+
* please indicate their number here
21+
*/
22+
protected $usersCountCorrection = 0;
23+
protected $rolesCount = 3; //correct according to your data
24+
protected $permissionsCount = 4; //correct according to your data
2025

2126
protected $queries = 0;
2227

@@ -27,7 +32,7 @@ protected function setUp(): void
2732
$this->assertEquals($this->rolesCount, config('roles.models.role')::count());
2833
$this->assertEquals($this->permissionsCount, config('roles.models.permission')::count());
2934

30-
DB::listen(function (QueryExecuted $query) {
35+
DB::listen(function(QueryExecuted $query) {
3136
$this->queries++;
3237
});
3338
}
@@ -38,27 +43,28 @@ public function canPreloadRolesOnCollection(): void
3843
$roleIds = config('roles.models.role')::pluck('id');
3944

4045
User::factory($this->usersCount)->create()
41-
->each(function (User $user) use ($roleIds) {
46+
->each(function(User $user) use ($roleIds) {
4247
$user->roles()->attach($roleIds);
4348
});
44-
$this->assertEquals($this->usersCount, User::count());
49+
$this->assertEquals($this->usersCount, User::count() - $this->usersCountCorrection);
4550

4651
$this->queries = 0;
4752

4853
// without eager load
4954
$users = User::get();
5055
$this->assertQueries(1);
5156

52-
$users->each(function (User $user) {
57+
$users->each(function(User $user) {
5358
$user->getRoles();
5459
});
60+
$this->queries = $this->queries - $this->usersCountCorrection;
5561
$this->assertQueries($this->usersCount);
5662

5763
// with eager load
5864
$users = User::with('roles')->get();
5965
$this->assertQueries(2);
6066

61-
$users->each(function (User $user) {
67+
$users->each(function(User $user) {
6268
$user->getRoles();
6369
});
6470
$this->assertQueries(0);
@@ -136,33 +142,33 @@ public function canPreloadPermissionsOnCollection(): void
136142
$roleIds = config('roles.models.role')::pluck('id');
137143

138144
User::factory($this->usersCount)->create()
139-
->each(function (User $user) use ($roleIds) {
145+
->each(function(User $user) use ($roleIds) {
140146
$user->roles()->attach($roleIds);
141147
});
142-
$this->assertEquals($this->usersCount, User::count());
148+
$this->assertEquals($this->usersCount, User::count() - $this->usersCountCorrection);
143149

144150
$this->queries = 0;
145151

146152
// without eager load
147153
$users = User::get();
148154
$this->assertQueries(1);
149155

150-
$users->each(function (User $user) {
156+
$users->each(function(User $user) {
151157
$user->getPermissions();
152158
});
153159
// rolePermissions(+getRoles) + userPermissions
154-
$this->assertQueries($this->usersCount * 3);
160+
$this->assertQueries(($this->usersCount + $this->usersCountCorrection) * 3);
155161

156162
// with eager load
157163
// TODO: 'rolePermissions' relation
158164
$users = User::with('roles', 'userPermissions')->get();
159165
$this->assertQueries(3);
160166

161-
$users->each(function (User $user) {
167+
$users->each(function(User $user) {
162168
$user->getPermissions();
163169
});
164170
// TODO: optimize via relations: userPermissions and rolePermissions
165-
$this->assertQueries(20);
171+
$this->assertQueries(20 + $this->usersCountCorrection * 2);
166172
// $this->assertQueries(0);
167173
}
168174

0 commit comments

Comments
 (0)