create([ 'app_client_id' => 'client-123', 'app_client_secret' => 'secret', 'status' => 'active', ]); [$user, $tenant] = createUserWithTenant( tenant: $tenant, role: 'owner', fixtureProfile: 'credential-enabled', ); $service = app(RoleDefinitionsSyncService::class); $result = $service->startManualSync($tenant, $user); expect($result)->toBeInstanceOf(ProviderOperationStartResult::class); expect($result->status)->toBe('started'); $run = $result->run; expect($run->type)->toBe('directory_role_definitions.sync'); expect($run->context['provider_connection_id'] ?? null)->toBeInt(); $url = OperationRunLinks::tenantlessView($run); expect($url)->toContain('/admin/operations/'); Bus::assertDispatched( App\Jobs\SyncRoleDefinitionsJob::class, fn (App\Jobs\SyncRoleDefinitionsJob $job): bool => $job->tenantId === (int) $tenant->getKey() && $job->providerConnectionId === ($run->context['provider_connection_id'] ?? null) && $job->operationRun?->is($run) ); });