toBeInstanceOf(SecurityAlertMailConfig::class) ->and($config->recipientEmail->value)->not->toBeEmpty(); }); it('resolves HmacAuthConfig with dev client credentials', function (): void { // WHEN $config = resolve(HmacAuthConfig::class); // THEN expect($config)->toBeInstanceOf(HmacAuthConfig::class) ->and($config->devClient)->not->toBeNull() ->and($config->devClient?->name->value)->toBe('Arcadia Dev Test Client'); }); it('resolves ThrottlingConfig with typed RequestsPerMinute VOs', function (): void { // WHEN $config = resolve(ThrottlingConfig::class); // THEN expect($config)->toBeInstanceOf(ThrottlingConfig::class) ->and($config->webLimit->toInt())->toBeGreaterThanOrEqual(1) ->and($config->apiV1Limit->toInt())->toBeGreaterThanOrEqual(1); }); it('resolves AppConfig with typed timezone and locale VOs', function (): void { // WHEN $config = resolve(AppConfig::class); // THEN expect($config)->toBeInstanceOf(AppConfig::class) ->and($config->name->value)->not->toBeEmpty() ->and($config->timezone->name)->toBe('UTC') ->and($config->locale->value())->not->toBeEmpty() ->and($config->fallbackLocale->value())->not->toBeEmpty(); }); it('resolves ArcadiaStorageConfig with database and cache settings', function (): void { // WHEN $config = resolve(ArcadiaStorageConfig::class); // THEN expect($config)->toBeInstanceOf(ArcadiaStorageConfig::class) ->and($config->cacheStore)->not->toBeEmpty() ->and($config->databaseConnection)->not->toBeEmpty(); }); it('resolves PSR-20 ClockInterface and Clock service singleton configured with AppConfig timezone', function (): void { // WHEN $clock = resolve(Clock::class); $clockInterface = resolve(ClockInterface::class); // THEN expect($clock)->toBeInstanceOf(SystemClock::class) ->and($clockInterface)->toBeInstanceOf(SystemClock::class) ->and($clock->now()->getTimezone()->getName())->toBe('UTC'); }); });