create(); $tenant->makeCurrent(); Filament::setTenant($tenant, true); [$user] = createUserWithTenant(tenant: $tenant, role: 'owner'); $backupSet = BackupSet::factory()->create([ 'tenant_id' => $tenant->id, 'name' => 'Test backup', 'item_count' => 0, ]); $policyA = Policy::factory()->create([ 'tenant_id' => $tenant->id, 'ignored_at' => null, 'last_synced_at' => now(), ]); $policyB = Policy::factory()->create([ 'tenant_id' => $tenant->id, 'ignored_at' => null, 'last_synced_at' => now(), ]); $itemA = BackupItem::factory()->create([ 'tenant_id' => $tenant->id, 'backup_set_id' => $backupSet->id, 'policy_id' => $policyA->id, 'policy_identifier' => $policyA->external_id, 'policy_type' => $policyA->policy_type, 'platform' => $policyA->platform, ]); $itemB = BackupItem::factory()->create([ 'tenant_id' => $tenant->id, 'backup_set_id' => $backupSet->id, 'policy_id' => $policyB->id, 'policy_identifier' => $policyB->external_id, 'policy_type' => $policyB->policy_type, 'platform' => $policyB->platform, ]); $backupSet->update(['item_count' => $backupSet->items()->count()]); expect($backupSet->refresh()->item_count)->toBe(2); Livewire::actingAs($user) ->test(BackupItemsRelationManager::class, [ 'ownerRecord' => $backupSet, 'pageClass' => \App\Filament\Resources\BackupSetResource\Pages\ViewBackupSet::class, ]) ->callTableBulkAction('bulk_remove', collect([$itemA, $itemB])) ->assertHasNoTableBulkActionErrors(); Queue::assertPushed(RemovePoliciesFromBackupSetJob::class); $run = OperationRun::query() ->where('tenant_id', $tenant->getKey()) ->where('type', 'backup_set.remove_policies') ->latest('id') ->first(); expect($run)->not->toBeNull(); expect($run?->status)->toBe('queued'); expect($run?->outcome)->toBe('pending'); expect($run?->context['backup_set_id'] ?? null)->toBe((int) $backupSet->getKey()); // Enqueue-only: deletion happens in the job. $backupSet->refresh(); expect($backupSet->items()->count())->toBe(2); expect($backupSet->item_count)->toBe(2); });