Skip to content

Commit 8c14796

Browse files
authored
Merge pull request #185 from ulcuber/test-relations
n+1 tests
2 parents 6986354 + f2adc1c commit 8c14796

13 files changed

+416
-68
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,3 +51,4 @@ packages/
5151
npm-debug.log
5252
yarn-error.log
5353

54+
.phpunit.result.cache

phpunit.xml

Lines changed: 19 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,21 @@
11
<?xml version="1.0" encoding="UTF-8"?>
2-
<phpunit bootstrap="vendor/autoload.php"
3-
backupGlobals="false"
4-
backupStaticAttributes="false"
5-
colors="true"
6-
verbose="true"
7-
convertErrorsToExceptions="true"
8-
convertNoticesToExceptions="true"
9-
convertWarningsToExceptions="true"
10-
processIsolation="false"
11-
stopOnFailure="false">
12-
<testsuites>
13-
<testsuite name="Feature">
14-
<directory suffix="Test.php">./tests/Feature</directory>
15-
</testsuite>
16-
</testsuites>
17-
<filter>
18-
<whitelist>
19-
<directory suffix=".php">src/</directory>
20-
</whitelist>
21-
</filter>
22-
<php>
23-
<env name="APP_KEY" value="base64:17D5MHqbPTIPEHCFqyaari5C7wKMoSceYyvwEXorYuI="/>
24-
<env name="APP_ENV" value="testing"/>
25-
<env name="DB_CONNECTION" value="testing"/>
26-
<env name="CACHE_DRIVER" value="array"/>
27-
<env name="SESSION_DRIVER" value="array"/>
28-
<env name="QUEUE_DRIVER" value="sync"/>
29-
</php>
2+
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" bootstrap="vendor/autoload.php" backupGlobals="false" backupStaticAttributes="false" colors="true" verbose="true" convertErrorsToExceptions="true" convertNoticesToExceptions="true" convertWarningsToExceptions="true" processIsolation="false" stopOnFailure="false" xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/9.3/phpunit.xsd">
3+
<coverage>
4+
<include>
5+
<directory suffix=".php">src/</directory>
6+
</include>
7+
</coverage>
8+
<testsuites>
9+
<testsuite name="Feature">
10+
<directory suffix="Test.php">./tests/Feature</directory>
11+
</testsuite>
12+
</testsuites>
13+
<php>
14+
<env name="APP_KEY" value="base64:17D5MHqbPTIPEHCFqyaari5C7wKMoSceYyvwEXorYuI="/>
15+
<env name="APP_ENV" value="testing"/>
16+
<env name="DB_CONNECTION" value="testing"/>
17+
<env name="CACHE_DRIVER" value="array"/>
18+
<env name="SESSION_DRIVER" value="array"/>
19+
<env name="QUEUE_DRIVER" value="sync"/>
20+
</php>
3021
</phpunit>

src/Database/Seeders/DefaultConnectRelationshipsSeeder.php

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,13 @@ public function run()
2424
$roleAdmin = config('roles.models.role')::where('slug', '=', 'admin')->first()
2525
?? config('roles.models.role')::where('name', '=', 'Admin')->first();
2626

27-
echo "\e[32mSeeding:\e[0m DefaultConnectRelationshipsSeeder\r\n";
27+
$this->command->getOutput()->writeln("<info>Seeding:</info> DefaultConnectRelationshipsSeeder");
2828
foreach ($permissions as $permission) {
2929
$roleAdmin->attachPermission($permission);
30-
echo "\e[32mSeeding:\e[0m DefaultConnectRelationshipsSeeder - Role:Admin attached to Permission:".$permission->slug."\r\n";
30+
$this->command->getOutput()->writeln(
31+
"<info>Seeding:</info> DefaultConnectRelationshipsSeeder - Role:Admin attached to Permission:"
32+
. $permission->slug
33+
);
3134
}
3235
}
3336
}

src/Database/Seeders/DefaultPermissionsTableSeeder.php

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -48,17 +48,21 @@ public function run()
4848
* Add Permission Items
4949
*
5050
*/
51-
echo "\e[32mSeeding:\e[0m DefaultPermissionitemsTableSeeder\r\n";
51+
$this->command->getOutput()->writeln("<info>Seeding:</info> DefaultPermissionitemsTableSeeder");
5252
foreach ($Permissionitems as $Permissionitem) {
53-
$newPermissionitem = config('roles.models.permission')::where('slug', '=', $Permissionitem['slug'])->first();
53+
$newPermissionitem = config('roles.models.permission')::where('slug', '=', $Permissionitem['slug'])
54+
->first();
5455
if ($newPermissionitem === null) {
5556
$newPermissionitem = config('roles.models.permission')::create([
5657
'name' => $Permissionitem['name'],
5758
'slug' => $Permissionitem['slug'],
5859
'description' => $Permissionitem['description'],
5960
'model' => $Permissionitem['model'],
6061
]);
61-
echo "\e[32mSeeding:\e[0m DefaultPermissionitemsTableSeeder - Permission:".$Permissionitem['slug']."\r\n";
62+
$this->command->getOutput()->writeln(
63+
"<info>Seeding:</info> DefaultPermissionitemsTableSeeder - Permission:"
64+
. $Permissionitem['slug']
65+
);
6266
}
6367
}
6468
}

src/Database/Seeders/DefaultRolesTableSeeder.php

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ public function run()
4242
* Add Role Items
4343
*
4444
*/
45-
echo "\e[32mSeeding:\e[0m DefaultRoleItemsTableSeeder\r\n";
45+
$this->command->getOutput()->writeln("<info>Seeding:</info> DefaultRoleItemsTableSeeder");
4646
foreach ($RoleItems as $RoleItem) {
4747
$newRoleItem = config('roles.models.role')::where('slug', '=', $RoleItem['slug'])->first();
4848
if ($newRoleItem === null) {
@@ -52,7 +52,9 @@ public function run()
5252
'description' => $RoleItem['description'],
5353
'level' => $RoleItem['level'],
5454
]);
55-
echo "\e[32mSeeding:\e[0m DefaultRoleItemsTableSeeder - Role:".$RoleItem['slug']."\r\n";
55+
$this->command->getOutput()->writeln(
56+
"<info>Seeding:</info> DefaultRoleItemsTableSeeder - Role:" . $RoleItem['slug']
57+
);
5658
}
5759
}
5860
}

src/Database/Seeders/DefaultUsersTableSeeder.php

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ public function run()
2121
* Add Users
2222
*
2323
*/
24-
echo "\e[32mSeeding:\e[0m DefaultUsersTableSeeder\r\n";
24+
$this->command->getOutput()->writeln("<info>Seeding:</info> DefaultUsersTableSeeder");
2525

2626
if (config('roles.models.defaultUser')::where('email', '=', 'admin@admin.com')->first() === null) {
2727
$newUser = config('roles.models.defaultUser')::create([
@@ -34,7 +34,9 @@ public function run()
3434
foreach ($permissions as $permission) {
3535
$newUser->attachPermission($permission);
3636
}
37-
echo "\e[32mSeeding:\e[0m DefaultUsersTableSeeder - User:admin@admin.com\r\n";
37+
$this->command->getOutput()->writeln(
38+
"<info>Seeding:</info> DefaultUsersTableSeeder - User:admin@admin.com"
39+
);
3840
}
3941

4042
if (config('roles.models.defaultUser')::where('email', '=', 'user@user.com')->first() === null) {
@@ -45,7 +47,7 @@ public function run()
4547
]);
4648

4749
$newUser->attachRole($userRole);
48-
echo "\e[32mSeeding:\e[0m DefaultUsersTableSeeder - User:user@user.com\r\n";
50+
$this->command->getOutput()->writeln("<info>Seeding:</info> DefaultUsersTableSeeder - User:user@user.com");
4951
}
5052
}
5153
}
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
<?php
2+
3+
namespace jeremykenedy\LaravelRoles\Database\TestMigrations;
4+
5+
use Illuminate\Database\Migrations\Migration;
6+
use Illuminate\Database\Schema\Blueprint;
7+
use Illuminate\Support\Facades\Schema;
8+
9+
class CreateUsersTable extends Migration
10+
{
11+
/**
12+
* Run the migrations.
13+
*
14+
* @return void
15+
*/
16+
public function up()
17+
{
18+
Schema::create('users', function (Blueprint $table) {
19+
$table->id();
20+
$table->string('name');
21+
$table->string('email')->unique();
22+
$table->timestamp('email_verified_at')->nullable();
23+
$table->string('password');
24+
$table->rememberToken();
25+
$table->timestamps();
26+
});
27+
}
28+
29+
/**
30+
* Reverse the migrations.
31+
*
32+
* @return void
33+
*/
34+
public function down()
35+
{
36+
Schema::dropIfExists('users');
37+
}
38+
}

src/RolesServiceProvider.php

Lines changed: 25 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -77,29 +77,32 @@ private function loadMigrations()
7777
*/
7878
private function loadSeedsFrom()
7979
{
80-
if (config('roles.defaultSeeds.PermissionsTableSeeder')) {
81-
$this->app['seed.handler']->register(
82-
DefaultPermissionsTableSeeder::class
83-
);
84-
}
85-
86-
if (config('roles.defaultSeeds.RolesTableSeeder')) {
87-
$this->app['seed.handler']->register(
88-
DefaultRolesTableSeeder::class
89-
);
90-
}
91-
92-
if (config('roles.defaultSeeds.ConnectRelationshipsSeeder')) {
93-
$this->app['seed.handler']->register(
94-
DefaultConnectRelationshipsSeeder::class
95-
);
96-
}
80+
$this->app->afterResolving('seed.handler', function ($handler) {
81+
if (config('roles.defaultSeeds.PermissionsTableSeeder')) {
82+
$handler->register(
83+
DefaultPermissionsTableSeeder::class
84+
);
85+
}
86+
87+
if (config('roles.defaultSeeds.RolesTableSeeder')) {
88+
$handler->register(
89+
DefaultRolesTableSeeder::class
90+
);
91+
}
92+
93+
if (config('roles.defaultSeeds.ConnectRelationshipsSeeder')) {
94+
$handler->register(
95+
DefaultConnectRelationshipsSeeder::class
96+
);
97+
}
98+
99+
if (config('roles.defaultSeeds.UsersTableSeeder')) {
100+
$handler->register(
101+
DefaultUsersTableSeeder::class
102+
);
103+
}
104+
});
97105

98-
if (config('roles.defaultSeeds.UsersTableSeeder')) {
99-
$this->app['seed.handler']->register(
100-
DefaultUsersTableSeeder::class
101-
);
102-
}
103106
}
104107

105108
/**

0 commit comments

Comments
 (0)