create([ 'tenant_id' => null, 'external_id' => 'platform', 'name' => 'Platform', ]); }); it('uses an intent-only toast with a working view-run link and does not emit queued database notifications', function () { Queue::fake(); NotificationFacade::fake(); $platformTenant = Tenant::query()->where('external_id', 'platform')->firstOrFail(); $tenant = Tenant::factory()->create([ 'workspace_id' => (int) $platformTenant->workspace_id, ]); Finding::factory()->create([ 'tenant_id' => (int) $tenant->getKey(), 'due_at' => null, ]); $user = PlatformUser::factory()->create([ 'capabilities' => [ PlatformCapabilities::ACCESS_SYSTEM_PANEL, PlatformCapabilities::OPS_VIEW, PlatformCapabilities::RUNBOOKS_VIEW, PlatformCapabilities::RUNBOOKS_RUN, PlatformCapabilities::RUNBOOKS_FINDINGS_LIFECYCLE_BACKFILL, ], 'is_active' => true, ]); $this->actingAs($user, 'platform'); Livewire::test(Runbooks::class) ->callAction('preflight', data: [ 'scope_mode' => FindingsLifecycleBackfillScope::MODE_ALL_TENANTS, ]) ->assertSet('preflight.affected_count', 1) ->callAction('run', data: [ 'typed_confirmation' => 'BACKFILL', 'reason_code' => 'DATA_REPAIR', 'reason_text' => 'Operator test', ]) ->assertHasNoActionErrors() ->assertNotified('Findings lifecycle backfill queued'); NotificationFacade::assertNothingSent(); expect(DatabaseNotification::query()->count())->toBe(0); $run = OperationRun::query() ->where('type', 'findings.lifecycle.backfill') ->latest('id') ->first(); expect($run)->not->toBeNull(); $viewUrl = SystemOperationRunLinks::view($run); $this->get($viewUrl) ->assertSuccessful() ->assertSee('Run #'.(int) $run?->getKey()); });