summaryrefslogtreecommitdiff
path: root/tst/env.test.ts
blob: 0fd7f5a25252985be11de9afb9ac1353a7b51837 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
import { getEnv, getRequiredEnv, getRequiredEnvVars } from '../lib/index';

describe('process/env', () => {
    const originalEnv = process.env;

    beforeEach(() => {
        process.env = { ...originalEnv };
    });

    afterAll(() => {
        process.env = originalEnv;
    });

    test('getEnv returns optional when present', () => {
        process.env.MY_VAR = 'hello';
        expect(getEnv('MY_VAR').get()).toBe('hello');
    });

    test('getRequiredEnv returns left when missing', () => {
        delete process.env.MISSING;
        const res = getRequiredEnv('MISSING');
        expect(res.left().get().message).toMatch(/environment variable "MISSING" is required/);
    });

    test('getRequiredEnvVars collects required variables', () => {
        process.env.A = '1';
        process.env.B = '2';

        const res = getRequiredEnvVars(['A', 'B'] as const);
        expect(res.right().get()).toEqual({ A: '1', B: '2' });
    });
});