actingAs($user); Filament::setTenant($tenant, true); $run = OperationRun::factory()->create([ 'tenant_id' => $tenant->getKey(), 'user_id' => $user->getKey(), 'initiator_name' => $user->name, 'type' => 'policy.delete', 'status' => 'queued', 'outcome' => 'pending', 'context' => ['operation' => ['type' => 'policy.delete']], 'summary_counts' => [ 'total' => 10, 'processed' => 1, 'secrets' => 999, ], ]); /** @var OperationRunService $service */ $service = app(OperationRunService::class); $service->incrementSummaryCounts($run, [ 'processed' => 2, 'failed' => 1, 'secrets' => 123, ]); $run->refresh(); expect($run->summary_counts['total'] ?? null)->toBe(10); expect($run->summary_counts['processed'] ?? null)->toBe(3); expect($run->summary_counts['failed'] ?? null)->toBe(1); expect($run->summary_counts)->not->toHaveKey('secrets'); })->group('ops-ux'); it('increments canonical backup-flow summary keys used by RBAC foundation capture', function (): void { [$user, $tenant] = createUserWithTenant(role: 'owner'); $this->actingAs($user); Filament::setTenant($tenant, true); $run = OperationRun::factory()->create([ 'tenant_id' => $tenant->getKey(), 'user_id' => $user->getKey(), 'initiator_name' => $user->name, 'type' => 'backup_set.add_policies', 'status' => 'queued', 'outcome' => 'pending', 'context' => ['options' => ['include_foundations' => true]], 'summary_counts' => [ 'total' => 1, 'processed' => 1, 'succeeded' => 1, 'created' => 1, 'items' => 1, ], ]); /** @var OperationRunService $service */ $service = app(OperationRunService::class); $service->incrementSummaryCounts($run, [ 'total' => 2, 'items' => 2, 'processed' => 2, 'succeeded' => 2, 'created' => 1, 'updated' => 1, 'secrets' => 123, ]); $run->refresh(); expect($run->summary_counts)->toMatchArray([ 'total' => 3, 'processed' => 3, 'succeeded' => 3, 'created' => 2, 'updated' => 1, 'items' => 3, ]); expect($run->summary_counts)->not->toHaveKey('secrets'); })->group('ops-ux');