(overrides: Record<string, string | undefined> = {})
| 42 | * ``` |
| 43 | */ |
| 44 | export function createEnvMock(overrides: Record<string, string | undefined> = {}) { |
| 45 | const envValues = { ...defaultMockEnv, ...overrides } |
| 46 | |
| 47 | return { |
| 48 | env: envValues, |
| 49 | getEnv: createMockGetEnv(envValues), |
| 50 | isTruthy: (value: string | boolean | number | undefined) => |
| 51 | typeof value === 'string' ? value.toLowerCase() === 'true' || value === '1' : Boolean(value), |
| 52 | isFalsy: (value: string | boolean | number | undefined) => |
| 53 | typeof value === 'string' |
| 54 | ? value.toLowerCase() === 'false' || value === '0' |
| 55 | : value === false, |
| 56 | envBoolean: (value: boolean | string | undefined | null): boolean | undefined => { |
| 57 | if (typeof value === 'boolean') return value |
| 58 | if (value === undefined || value === null || value === '') return undefined |
| 59 | const normalized = String(value).trim().toLowerCase() |
| 60 | return ( |
| 61 | normalized === 'true' || normalized === '1' || normalized === 'yes' || normalized === 'on' |
| 62 | ) |
| 63 | }, |
| 64 | envNumber: ( |
| 65 | value: number | string | undefined | null, |
| 66 | fallback: number, |
| 67 | options: { min?: number } = {} |
| 68 | ): number => { |
| 69 | const min = options.min ?? 0 |
| 70 | if (typeof value === 'number' && Number.isFinite(value) && value >= min) return value |
| 71 | if (value === undefined || value === null || value === '') return fallback |
| 72 | const parsed = Number(value) |
| 73 | return Number.isFinite(parsed) && parsed >= min ? parsed : fallback |
| 74 | }, |
| 75 | } |
| 76 | } |
| 77 | |
| 78 | /** |
| 79 | * Pre-configured env mock for direct use with vi.mock |
no test coverage detected