diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 434a6bb95..13d765cea 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -16,8 +16,11 @@ jobs: strategy: fail-fast: true matrix: - php: [8.2, 8.3, 8.4] + php: [8.2, 8.3, 8.4, 8.5] laravel: [11, 12] + exclude: + - php: 8.5 + laravel: 11 name: PHP ${{ matrix.php }} - Laravel ${{ matrix.laravel }} diff --git a/composer.json b/composer.json index 96be83570..733d34d6e 100644 --- a/composer.json +++ b/composer.json @@ -27,9 +27,8 @@ "laravel/sanctum": "^4.0", "livewire/livewire": "^3.3", "mockery/mockery": "^1.0", - "orchestra/testbench": "^9.0|^10.0", - "phpstan/phpstan": "^1.10", - "phpunit/phpunit": "^11.0" + "orchestra/testbench": "^9.15|^10.8", + "phpstan/phpstan": "^1.10" }, "autoload": { "psr-4": { @@ -51,6 +50,9 @@ } }, "config": { + "audit": { + "block-insecure": false + }, "sort-packages": true }, "minimum-stability": "dev", diff --git a/tests/AddTeamMemberTest.php b/tests/AddTeamMemberTest.php index cc698b97b..794d61993 100644 --- a/tests/AddTeamMemberTest.php +++ b/tests/AddTeamMemberTest.php @@ -18,10 +18,10 @@ class AddTeamMemberTest extends OrchestraTestCase { use RefreshDatabase; + /** {@inheritdoc} */ + #[\Override] protected function defineEnvironment($app) { - parent::defineEnvironment($app); - Gate::policy(Team::class, TeamPolicy::class); Jetstream::useUserModel(User::class); diff --git a/tests/CreateTeamTest.php b/tests/CreateTeamTest.php index f71e01804..f14497294 100644 --- a/tests/CreateTeamTest.php +++ b/tests/CreateTeamTest.php @@ -12,10 +12,10 @@ class CreateTeamTest extends OrchestraTestCase { + /** {@inheritdoc} */ + #[\Override] protected function defineEnvironment($app) { - parent::defineEnvironment($app); - Gate::policy(Team::class, TeamPolicy::class); Jetstream::useUserModel(User::class); } diff --git a/tests/CurrentTeamControllerTest.php b/tests/CurrentTeamControllerTest.php index f958ff697..f3e7193eb 100644 --- a/tests/CurrentTeamControllerTest.php +++ b/tests/CurrentTeamControllerTest.php @@ -8,18 +8,16 @@ use Laravel\Jetstream\Jetstream; use Laravel\Jetstream\Tests\Fixtures\TeamPolicy; use Laravel\Jetstream\Tests\Fixtures\User; +use Orchestra\Testbench\Attributes\WithConfig; +#[WithConfig('jetstream.stack', 'livewire')] +#[WithConfig('jetstream.features', ['teams'])] class CurrentTeamControllerTest extends OrchestraTestCase { + /** {@inheritdoc} */ + #[\Override] protected function defineEnvironment($app) { - parent::defineEnvironment($app); - - $app['config']->set([ - 'jetstream.stack' => 'livewire', - 'jetstream.features' => ['teams'], - ]); - Gate::policy(Team::class, TeamPolicy::class); Jetstream::useUserModel(User::class); } diff --git a/tests/DeleteTeamTest.php b/tests/DeleteTeamTest.php index 98a142ab2..4c1528175 100644 --- a/tests/DeleteTeamTest.php +++ b/tests/DeleteTeamTest.php @@ -15,10 +15,10 @@ class DeleteTeamTest extends OrchestraTestCase { + /** {@inheritdoc} */ + #[\Override] protected function defineEnvironment($app) { - parent::defineEnvironment($app); - Gate::policy(Team::class, TeamPolicy::class); Jetstream::useUserModel(User::class); } diff --git a/tests/DeleteUserWithTeamsTest.php b/tests/DeleteUserWithTeamsTest.php index e12ea7e2c..5864463c6 100644 --- a/tests/DeleteUserWithTeamsTest.php +++ b/tests/DeleteUserWithTeamsTest.php @@ -19,10 +19,10 @@ class DeleteUserWithTeamsTest extends OrchestraTestCase { use RefreshDatabase; + /** {@inheritdoc} */ + #[\Override] protected function defineEnvironment($app) { - parent::defineEnvironment($app); - Gate::policy(Team::class, TeamPolicy::class); Jetstream::useUserModel(User::class); } diff --git a/tests/HasTeamsTest.php b/tests/HasTeamsTest.php index 74e0de5be..20c3017cc 100644 --- a/tests/HasTeamsTest.php +++ b/tests/HasTeamsTest.php @@ -14,10 +14,10 @@ class HasTeamsTest extends OrchestraTestCase { use RefreshDatabase; + /** {@inheritdoc} */ + #[\Override] protected function defineEnvironment($app) { - parent::defineEnvironment($app); - Jetstream::$permissions = []; Jetstream::$roles = []; diff --git a/tests/InviteTeamMemberTest.php b/tests/InviteTeamMemberTest.php index 6a231187a..3292c7cbc 100644 --- a/tests/InviteTeamMemberTest.php +++ b/tests/InviteTeamMemberTest.php @@ -14,12 +14,11 @@ class InviteTeamMemberTest extends OrchestraTestCase { + /** {@inheritdoc} */ + #[\Override] protected function defineEnvironment($app) { - parent::defineEnvironment($app); - Gate::policy(Team::class, TeamPolicy::class); - Jetstream::useUserModel(User::class); } diff --git a/tests/JetstreamTest.php b/tests/JetstreamTest.php index 054cd2183..0437e2062 100644 --- a/tests/JetstreamTest.php +++ b/tests/JetstreamTest.php @@ -3,6 +3,7 @@ namespace Laravel\Jetstream\Tests; use Laravel\Jetstream\Jetstream; +use Orchestra\Testbench\Attributes\DefineEnvironment; class JetstreamTest extends OrchestraTestCase { @@ -57,9 +58,7 @@ public function test_has_team_feature_will_always_return_false_when_team_is_not_ $this->assertFalse(Jetstream::userHasTeamFeatures(new Fixtures\Admin)); } - /** - * @define-env defineHasTeamEnvironment - */ + #[DefineEnvironment('defineHasTeamEnvironment')] public function test_has_team_feature_can_be_determined_when_team_is_enabled() { $this->assertTrue(Jetstream::hasTeamFeatures()); diff --git a/tests/OrchestraTestCase.php b/tests/OrchestraTestCase.php index afa91ca5a..394348a4f 100644 --- a/tests/OrchestraTestCase.php +++ b/tests/OrchestraTestCase.php @@ -7,18 +7,15 @@ use Laravel\Jetstream\Features; use Laravel\Jetstream\JetstreamServiceProvider; use Livewire\LivewireServiceProvider; +use Orchestra\Testbench\Attributes\WithConfig; use Orchestra\Testbench\Concerns\WithWorkbench; use Orchestra\Testbench\TestCase; +#[WithConfig('database.default', 'testing')] abstract class OrchestraTestCase extends TestCase { use LazilyRefreshDatabase, WithWorkbench; - protected function defineEnvironment($app) - { - $app['config']->set('database.default', 'testing'); - } - protected function defineHasTeamEnvironment($app) { $features = $app->config->get('jetstream.features', []); diff --git a/tests/RemoveTeamMemberTest.php b/tests/RemoveTeamMemberTest.php index ef7e5fd92..655f5a6f3 100644 --- a/tests/RemoveTeamMemberTest.php +++ b/tests/RemoveTeamMemberTest.php @@ -18,12 +18,11 @@ class RemoveTeamMemberTest extends OrchestraTestCase { + /** {@inheritdoc} */ + #[\Override] protected function defineEnvironment($app) { - parent::defineEnvironment($app); - Gate::policy(Team::class, TeamPolicy::class); - Jetstream::useUserModel(User::class); } diff --git a/tests/TeamBehaviorTest.php b/tests/TeamBehaviorTest.php index d6960aa90..8e93ff6ad 100644 --- a/tests/TeamBehaviorTest.php +++ b/tests/TeamBehaviorTest.php @@ -13,10 +13,10 @@ class TeamBehaviorTest extends OrchestraTestCase { + /** {@inheritdoc} */ + #[\Override] protected function defineEnvironment($app) { - parent::defineEnvironment($app); - Gate::policy(\App\Models\Team::class, TeamPolicy::class); Jetstream::useUserModel(User::class); } diff --git a/tests/TeamInvitationControllerTest.php b/tests/TeamInvitationControllerTest.php index 5bed18ab0..782a731ab 100644 --- a/tests/TeamInvitationControllerTest.php +++ b/tests/TeamInvitationControllerTest.php @@ -10,16 +10,16 @@ use Laravel\Jetstream\Jetstream; use Laravel\Jetstream\Tests\Fixtures\TeamPolicy; use Laravel\Jetstream\Tests\Fixtures\User; +use Orchestra\Testbench\Attributes\WithConfig; +#[WithConfig('jetstream.stack', 'inertia')] +#[WithConfig('jetstream.features', ['teams'])] class TeamInvitationControllerTest extends OrchestraTestCase { + /** {@inheritdoc} */ + #[\Override] protected function defineEnvironment($app) { - parent::defineEnvironment($app); - - $app['config']->set('jetstream.stack', 'inertia'); - $app['config']->set('jetstream.features', ['teams']); - Gate::policy(Team::class, TeamPolicy::class); Jetstream::useUserModel(User::class); } diff --git a/tests/TeamMemberControllerTest.php b/tests/TeamMemberControllerTest.php index 7d09ff257..542f4ea0b 100644 --- a/tests/TeamMemberControllerTest.php +++ b/tests/TeamMemberControllerTest.php @@ -9,16 +9,16 @@ use Laravel\Jetstream\Tests\Fixtures\TeamPolicy; use Laravel\Jetstream\Tests\Fixtures\User; use Laravel\Sanctum\TransientToken; +use Orchestra\Testbench\Attributes\WithConfig; +#[WithConfig('jetstream.stack', 'inertia')] +#[WithConfig('jetstream.features', ['teams'])] class TeamMemberControllerTest extends OrchestraTestCase { + /** {@inheritdoc} */ + #[\Override] protected function defineEnvironment($app) { - parent::defineEnvironment($app); - - $app['config']->set('jetstream.stack', 'inertia'); - $app['config']->set('jetstream.features', ['teams']); - Gate::policy(Team::class, TeamPolicy::class); Jetstream::useUserModel(User::class); } diff --git a/tests/UpdateTeamTest.php b/tests/UpdateTeamTest.php index c76e02ca3..14537108a 100644 --- a/tests/UpdateTeamTest.php +++ b/tests/UpdateTeamTest.php @@ -13,10 +13,10 @@ class UpdateTeamTest extends OrchestraTestCase { + /** {@inheritdoc} */ + #[\Override] protected function defineEnvironment($app) { - parent::defineEnvironment($app); - Gate::policy(Team::class, TeamPolicy::class); Jetstream::useUserModel(User::class); } diff --git a/tests/UserProfileControllerTest.php b/tests/UserProfileControllerTest.php index 6c01a1bb2..02fc03cc3 100644 --- a/tests/UserProfileControllerTest.php +++ b/tests/UserProfileControllerTest.php @@ -7,27 +7,30 @@ use Laravel\Jetstream\Jetstream; use Laravel\Jetstream\Tests\Fixtures\User; use Mockery as m; +use Orchestra\Testbench\Attributes\WithConfig; +#[WithConfig('jetstream.stack', 'inertia')] class UserProfileControllerTest extends OrchestraTestCase { + /** {@inheritdoc} */ + #[\Override] protected function defineEnvironment($app) { - parent::defineEnvironment($app); - - $app['config']->set([ - 'jetstream.stack' => 'inertia', - 'fortify.features' => [ - Features::registration(), - Features::resetPasswords(), - // Features::emailVerification(), - Features::updateProfileInformation(), - Features::updatePasswords(), - Features::twoFactorAuthentication([ - 'confirm' => true, - 'confirmPassword' => true, - ]), - ], - ]); + tap($app->make('config'), function ($config) { + $config->set([ + 'fortify.features' => [ + Features::registration(), + Features::resetPasswords(), + // Features::emailVerification(), + Features::updateProfileInformation(), + Features::updatePasswords(), + Features::twoFactorAuthentication([ + 'confirm' => true, + 'confirmPassword' => true, + ]), + ], + ]); + }); Jetstream::useUserModel(User::class); }