create(); $this->assertInstanceOf(User::class, $assignment->assignee); $this->assertInstanceOf(Project::class, $assignment->scope); $this->assertSame('project:read', $assignment->permission->value); } /** * Ensure deleting users, teams, and projects removes related permission assignments. */ public function test_related_permission_assignments_are_removed_when_parent_models_are_deleted(): void { $user = User::factory()->create(); $team = Team::factory()->create(); $project = Project::factory()->create(); $userAssignment = PermissionAssignment::factory() ->forAssignee($user) ->globalAdmin() ->create(); $teamAssignment = PermissionAssignment::factory() ->forAssignee($team) ->forScope($project) ->projectWrite() ->create(); $teamScopeAssignment = PermissionAssignment::factory() ->forAssignee($user) ->forScope($team) ->teamManage() ->create(); $user->delete(); $project->delete(); $team->delete(); $this->assertDatabaseMissing('permission_assignments', [ 'id' => $userAssignment->id, ]); $this->assertDatabaseMissing('permission_assignments', [ 'id' => $teamAssignment->id, ]); $this->assertDatabaseMissing('permission_assignments', [ 'id' => $teamScopeAssignment->id, ]); } }