Public Access
63 lines
2.1 KiB
TypeScript
63 lines
2.1 KiB
TypeScript
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
|
|
})
|
|
})
|