diff --git a/composer.json b/composer.json index aa03921..fe3a387 100644 --- a/composer.json +++ b/composer.json @@ -39,8 +39,10 @@ "illuminate/support": "^8.12|^9.0|^10.0|^11.0|^12.0" }, "require-dev": { + "laravel/framework": "*", "laravel/pint": "^1.22", - "laravel/framework": "*" + "orchestra/testbench": "^10.4", + "phpunit/phpunit": "^12.2" }, "extra": { "laravel": { @@ -50,5 +52,29 @@ } }, "minimum-stability": "dev", - "prefer-stable": true -} \ No newline at end of file + "prefer-stable": true, + "autoload-dev": { + "psr-4": { + "Workbench\\App\\": "workbench/app/", + "Workbench\\Database\\Factories\\": "workbench/database/factories/", + "Workbench\\Database\\Seeders\\": "workbench/database/seeders/" + } + }, + "scripts": { + "post-autoload-dump": [ + "@clear", + "@prepare" + ], + "clear": "@php vendor/bin/testbench package:purge-skeleton --ansi", + "prepare": "@php vendor/bin/testbench package:discover --ansi", + "build": "@php vendor/bin/testbench workbench:build --ansi", + "serve": [ + "Composer\\Config::disableProcessTimeout", + "@build", + "@php vendor/bin/testbench serve --ansi" + ], + "lint": [ + "@php vendor/bin/pint --ansi" + ] + } +} diff --git a/phpunit.xml.dist b/phpunit.xml.dist new file mode 100644 index 0000000..11e605a --- /dev/null +++ b/phpunit.xml.dist @@ -0,0 +1,23 @@ + + + + + src/ + + + + + tests + + + + + + + + + \ No newline at end of file diff --git a/testbench.yaml b/testbench.yaml new file mode 100644 index 0000000..23e4015 --- /dev/null +++ b/testbench.yaml @@ -0,0 +1,33 @@ +laravel: '@testbench' + +providers: + # - Workbench\App\Providers\WorkbenchServiceProvider + +migrations: + - workbench/database/migrations + +seeders: + - Workbench\Database\Seeders\DatabaseSeeder + +workbench: + start: '/' + install: true + health: false + discovers: + web: true + api: true + commands: true + components: false + factories: true + views: false + build: + - asset-publish + - create-sqlite-db + - db-wipe + - migrate-fresh + assets: + - laravel-assets + sync: + - from: storage + to: workbench/storage + reverse: true diff --git a/tests/Unit/PermissionTest.php b/tests/Unit/PermissionTest.php new file mode 100644 index 0000000..cb956c5 --- /dev/null +++ b/tests/Unit/PermissionTest.php @@ -0,0 +1,28 @@ +loadLaravelMigrations(['--database' => 'testbench']); + $this->artisan('migrate', ['--database' => 'testbench']); + } + + public function testHasPermission() + { + // Assuming you have a User model with the HasPermissions trait + $user = \App\Models\User::factory()->create(); + + // Add a permission to the user + $user->permissions()->attach(1, ['context' => 'test']); + + // Check if the user has the permission + $this->assertTrue($user->hasPermission('view_posts', ['context' => 'test'])); + $this->assertFalse($user->hasPermission('edit_posts', ['context' => 'test'])); + } +}