not->toHaveKey('read') ->not->toHaveKey('write') ->not->toHaveKey('sticky') ->and($pgsql['driver'])->toBe('pgsql'); }); it('enables the read/write split when DB_READ_HOST is set', function () { putenv('DB_READ_HOST=replica1, replica2'); $pgsql = loadDbConfig()['connections']['pgsql']; expect($pgsql) ->toHaveKey('read') ->toHaveKey('write') ->and($pgsql['read']['host'])->toBe(['replica1', 'replica2']) ->and($pgsql['sticky'])->toBeTrue(); }); it('falls back to DB_* values for unset replica options', function () { putenv('DB_READ_HOST=replica1'); $pgsql = loadDbConfig()['connections']['pgsql']; expect($pgsql['read']['port'])->toBe(env('DB_PORT', '5432')) ->and($pgsql['read']['username'])->toBe(env('DB_USERNAME', 'coolify')) ->and($pgsql['write']['host'])->toBe([env('DB_HOST', 'coolify-db')]); }); it('respects discrete replica overrides', function () { putenv('DB_READ_HOST=replica1'); putenv('DB_READ_PORT=6432'); putenv('DB_READ_USERNAME=reader'); $pgsql = loadDbConfig()['connections']['pgsql']; expect($pgsql['read']['port'])->toBe('6432') ->and($pgsql['read']['username'])->toBe('reader'); }); it('disables sticky reads when DB_STICKY is false', function () { putenv('DB_READ_HOST=replica1'); putenv('DB_STICKY=false'); $pgsql = loadDbConfig()['connections']['pgsql']; expect($pgsql['sticky'])->toBeFalse(); });