Bisher wurde der NullNewsletterSyncClient unbedingt gebunden - NEWSLETTER_SYNC_ENABLED=true mit echtem Provider haette stumm nichts getan. Jetzt: Platzhalter-Provider -> No-Op-Client, aktivierter aber nicht implementierter Provider -> RuntimeException (fail fast). Das Admin-UI weist beim Test-Sync auf den Platzhalter hin. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
26 lines
1.1 KiB
PHP
26 lines
1.1 KiB
PHP
<?php
|
|
|
|
use App\Contracts\NewsletterSyncClient;
|
|
use App\Services\Newsletter\NullNewsletterSyncClient;
|
|
|
|
test('newsletter sync resolves to the null client while no real provider exists', function () {
|
|
config()->set('newsletter.sync.enabled', false);
|
|
config()->set('newsletter.sync.provider', 'placeholder');
|
|
|
|
expect(app(NewsletterSyncClient::class))->toBeInstanceOf(NullNewsletterSyncClient::class);
|
|
});
|
|
|
|
test('newsletter sync resolves to the null client for the placeholder provider even when enabled', function () {
|
|
config()->set('newsletter.sync.enabled', true);
|
|
config()->set('newsletter.sync.provider', 'placeholder');
|
|
|
|
expect(app(NewsletterSyncClient::class))->toBeInstanceOf(NullNewsletterSyncClient::class);
|
|
});
|
|
|
|
test('an enabled but unimplemented sync provider fails fast instead of silently doing nothing', function () {
|
|
config()->set('newsletter.sync.enabled', true);
|
|
config()->set('newsletter.sync.provider', 'mailchimp');
|
|
|
|
expect(fn () => app(NewsletterSyncClient::class))
|
|
->toThrow(RuntimeException::class, 'mailchimp');
|
|
});
|