import { describe, it, expect } from 'vitest' describe('env helpers', () => { it('uses default value when env var is missing', () => { delete process.env.TEST_VAR_UNIQUE const env = (key: string, defaultValue?: string): string => { const value = process.env[key] if (value === undefined || value === '') { if (defaultValue !== undefined) return defaultValue throw new Error(`Missing ${key}`) } return value } expect(env('TEST_VAR_UNIQUE', 'fallback')).toBe('fallback') }) it('returns env value when present', () => { process.env.TEST_VAR_UNIQUE = 'value' const env = (key: string, defaultValue?: string): string => { const value = process.env[key] if (value === undefined || value === '') { if (defaultValue !== undefined) return defaultValue throw new Error(`Missing ${key}`) } return value } expect(env('TEST_VAR_UNIQUE')).toBe('value') delete process.env.TEST_VAR_UNIQUE }) it('envInt parses integer', () => { process.env.TEST_INT = '42' const envInt = (key: string, defaultValue?: number): number => { const raw = process.env[key] if (raw === undefined || raw === '') { if (defaultValue !== undefined) return defaultValue throw new Error(`Missing ${key}`) } const parsed = parseInt(raw, 10) if (Number.isNaN(parsed)) throw new Error(`Invalid int ${key}`) return parsed } expect(envInt('TEST_INT')).toBe(42) delete process.env.TEST_INT }) it('envInt throws on NaN', () => { process.env.TEST_INT = 'abc' const envInt = (key: string, defaultValue?: number): number => { const raw = process.env[key] if (raw === undefined || raw === '') { if (defaultValue !== undefined) return defaultValue throw new Error(`Missing ${key}`) } const parsed = parseInt(raw, 10) if (Number.isNaN(parsed)) throw new Error(`Invalid int ${key}`) return parsed } expect(() => envInt('TEST_INT')).toThrow('Invalid int TEST_INT') delete process.env.TEST_INT }) })