create(); $connection = ProviderConnection::factory()->dedicated()->create([ 'tenant_id' => (int) $tenant->getKey(), 'workspace_id' => (int) $tenant->workspace_id, 'provider' => 'microsoft', 'entra_tenant_id' => (string) $tenant->graphTenantId(), ]); $envelope = app(ReasonPresenter::class)->forProviderReason( tenant: $tenant, reasonCode: ProviderReasonCodes::DedicatedCredentialMissing, connection: $connection, surface: 'helper_copy', ); expect($envelope)->not->toBeNull() ->and($envelope?->operatorLabel)->toBe('Dedicated credentials required') ->and($envelope?->shortExplanation)->toContain('dedicated credentials are configured') ->and($envelope?->toLegacyNextSteps()[0]['label'] ?? null)->toBe('Manage dedicated connection') ->and($envelope?->toLegacyNextSteps()[0]['url'] ?? null)->toContain('/provider-connections/'); }); it('uses a bounded provider fallback for untranslated extension reasons', function (): void { $envelope = app(\App\Support\Providers\ProviderReasonTranslator::class)->translate('ext.multiple_defaults_detected'); expect($envelope)->not->toBeNull() ->and($envelope?->operatorLabel)->toBe('Provider configuration needs review') ->and($envelope?->diagnosticCode())->toBe('ext.multiple_defaults_detected') ->and($envelope?->guidanceText())->toBe('Next step: Review the provider connection before retrying.'); });