30 lines
984 B
PHP
30 lines
984 B
PHP
<?php
|
|
|
|
use App\Enums\TeamMemberRole;
|
|
use App\Models\Team;
|
|
use App\Models\User;
|
|
use Database\Factories\TeamFactory;
|
|
|
|
test('team permissions follow membership and role', function (?TeamMemberRole $role, bool $canView, bool $canManage) {
|
|
$user = User::factory()->create();
|
|
$team = TeamFactory::new()->create();
|
|
if ($role !== null) {
|
|
$team->members()->attach($user, ['role' => $role]);
|
|
}
|
|
|
|
expect($user->can('view', $team))->toBe($canView);
|
|
expect($user->can('manage', $team))->toBe($canManage);
|
|
})->with([
|
|
'outsider' => [null, false, false],
|
|
'member' => [TeamMemberRole::Member, true, false],
|
|
'admin' => [TeamMemberRole::Admin, true, true],
|
|
]);
|
|
|
|
test('team creation requires a verified email', function () {
|
|
$verified = User::factory()->create();
|
|
$unverified = User::factory()->unverified()->create();
|
|
|
|
expect($verified->can('create', Team::class))->toBeTrue();
|
|
expect($unverified->can('create', Team::class))->toBeFalse();
|
|
});
|