import { describe, expect, it } from 'vitest'; import { apiEnvSchema, parseEnv } from './env'; const MINIMAL_ENV = { DATABASE_URL: 'postgresql://user:pass@localhost:5432/db' }; describe('parseEnv', () => { it('applies defaults for a minimal environment', () => { const env = parseEnv(apiEnvSchema, MINIMAL_ENV); expect(env.PORT).toBe(3000); expect(env.NODE_ENV).toBe('development'); expect(env.MIGRATE_ON_START).toBe(true); }); it('requires DATABASE_URL', () => { expect(() => parseEnv(apiEnvSchema, {})).toThrowError(/DATABASE_URL/); }); it('rejects non-postgres connection strings', () => { expect(() => parseEnv(apiEnvSchema, { DATABASE_URL: 'mysql://x' })).toThrowError(/postgresql/); }); it('fails with a message naming every invalid variable', () => { expect(() => parseEnv(apiEnvSchema, { ...MINIMAL_ENV, PORT: 'not-a-port', LOG_LEVEL: 'loud' }), ).toThrowError(/PORT.*\n.*LOG_LEVEL/s); }); });