|
1 | | -import { checkEnvironment, EnvironmentChecks } from './environment' |
| 1 | +const ENVIRONMENT_VAR_NAME = 'NEXT_PUBLIC_ENVIRONMENT' |
| 2 | +const originalEnvironment = process.env[ENVIRONMENT_VAR_NAME] |
2 | 3 |
|
3 | | -const DEFAULT_ENVIRONMENTS_CHECKS: EnvironmentChecks = { |
| 4 | +const DEFAULT_ENVIRONMENTS_CHECKS = { |
4 | 5 | isProd: false, |
5 | 6 | isPr: false, |
6 | 7 | isDev: false, |
7 | 8 | isLocal: false, |
8 | 9 | } |
9 | 10 |
|
10 | 11 | describe('Detect environments using configured env var', () => { |
11 | | - const ENVIRONMENT_VAR_NAME = 'NEXT_PUBLIC_ENVIRONMENT' |
12 | | - const originalEnvironment = process.env[ENVIRONMENT_VAR_NAME] |
13 | | - |
14 | 12 | afterEach(() => { |
| 13 | + jest.resetModules() |
| 14 | + |
15 | 15 | if (typeof originalEnvironment === 'undefined') { |
16 | 16 | delete process.env[ENVIRONMENT_VAR_NAME] |
17 | 17 | } else { |
18 | 18 | process.env[ENVIRONMENT_VAR_NAME] = originalEnvironment |
19 | 19 | } |
20 | 20 | }) |
21 | 21 |
|
22 | | - describe('No configured environment', () => { |
23 | | - it('returns no active envs', () => { |
24 | | - expect(checkEnvironment()).toEqual(DEFAULT_ENVIRONMENTS_CHECKS) |
25 | | - }) |
26 | | - }) |
| 22 | + it('throws when the env var is missing', async () => { |
| 23 | + delete process.env[ENVIRONMENT_VAR_NAME] |
27 | 24 |
|
28 | | - describe('Is production', () => { |
29 | | - const isProduction = { ...DEFAULT_ENVIRONMENTS_CHECKS, isProd: true } |
| 25 | + await expect(import('./environment')).rejects.toThrow(`Missing ${ENVIRONMENT_VAR_NAME}`) |
| 26 | + }) |
30 | 27 |
|
31 | | - it('uses env var override', () => { |
32 | | - process.env[ENVIRONMENT_VAR_NAME] = 'production' |
| 28 | + it('throws when the env var is invalid', async () => { |
| 29 | + process.env[ENVIRONMENT_VAR_NAME] = 'invalid-environment' |
33 | 30 |
|
34 | | - expect(checkEnvironment()).toEqual(isProduction) |
35 | | - }) |
| 31 | + await expect(import('./environment')).rejects.toThrow(`Invalid ${ENVIRONMENT_VAR_NAME}="invalid-environment"`) |
36 | 32 | }) |
37 | 33 |
|
38 | | - describe('Is PR', () => { |
39 | | - const isPr = { ...DEFAULT_ENVIRONMENTS_CHECKS, isPr: true } |
| 34 | + it('uses production env var override', async () => { |
| 35 | + process.env[ENVIRONMENT_VAR_NAME] = 'production' |
40 | 36 |
|
41 | | - it('uses env var override', () => { |
42 | | - process.env[ENVIRONMENT_VAR_NAME] = 'pr' |
| 37 | + const { checkEnvironment, environmentName } = await import('./environment') |
43 | 38 |
|
44 | | - expect(checkEnvironment()).toEqual(isPr) |
45 | | - }) |
| 39 | + expect(environmentName).toBe('production') |
| 40 | + expect(checkEnvironment()).toEqual({ ...DEFAULT_ENVIRONMENTS_CHECKS, isProd: true }) |
46 | 41 | }) |
47 | 42 |
|
48 | | - describe('Is Development', () => { |
49 | | - const isDevelopment = { ...DEFAULT_ENVIRONMENTS_CHECKS, isDev: true } |
| 43 | + it('uses pr env var override', async () => { |
| 44 | + process.env[ENVIRONMENT_VAR_NAME] = 'pr' |
50 | 45 |
|
51 | | - it('uses env var override', () => { |
52 | | - process.env[ENVIRONMENT_VAR_NAME] = 'development' |
| 46 | + const { checkEnvironment, environmentName } = await import('./environment') |
53 | 47 |
|
54 | | - expect(checkEnvironment()).toEqual(isDevelopment) |
55 | | - }) |
| 48 | + expect(environmentName).toBe('pr') |
| 49 | + expect(checkEnvironment()).toEqual({ ...DEFAULT_ENVIRONMENTS_CHECKS, isPr: true }) |
56 | 50 | }) |
57 | 51 |
|
58 | | - describe('Is Local', () => { |
59 | | - const isLocal = { ...DEFAULT_ENVIRONMENTS_CHECKS, isLocal: true } |
| 52 | + it('uses development env var override', async () => { |
| 53 | + process.env[ENVIRONMENT_VAR_NAME] = 'development' |
| 54 | + |
| 55 | + const { checkEnvironment, environmentName } = await import('./environment') |
60 | 56 |
|
61 | | - it('uses env var override', () => { |
62 | | - process.env[ENVIRONMENT_VAR_NAME] = 'local' |
| 57 | + expect(environmentName).toBe('development') |
| 58 | + expect(checkEnvironment()).toEqual({ ...DEFAULT_ENVIRONMENTS_CHECKS, isDev: true }) |
| 59 | + }) |
63 | 60 |
|
64 | | - expect(checkEnvironment()).toEqual(isLocal) |
65 | | - }) |
| 61 | + it('uses local env var override', async () => { |
| 62 | + process.env[ENVIRONMENT_VAR_NAME] = 'local' |
66 | 63 |
|
67 | | - it('returns no active envs when env var is invalid', () => { |
68 | | - process.env[ENVIRONMENT_VAR_NAME] = 'invalid-environment' |
| 64 | + const { checkEnvironment, environmentName } = await import('./environment') |
69 | 65 |
|
70 | | - expect(checkEnvironment()).toEqual(DEFAULT_ENVIRONMENTS_CHECKS) |
71 | | - }) |
| 66 | + expect(environmentName).toBe('local') |
| 67 | + expect(checkEnvironment()).toEqual({ ...DEFAULT_ENVIRONMENTS_CHECKS, isLocal: true }) |
72 | 68 | }) |
73 | 69 | }) |
0 commit comments