import { beforeEach, describe, expect, it, vi } from 'vitest'; describe('mobile env (lazy proxy)', () => { beforeEach(() => { vi.resetModules(); delete process.env.EXPO_PUBLIC_SUPABASE_URL; delete process.env.EXPO_PUBLIC_SUPABASE_ANON_KEY; delete process.env.EXPO_PUBLIC_AUTH_REDIRECT_URL; }); it('importing the module does NOT throw when required vars are missing', async () => { await expect(import('./env')).resolves.toBeTruthy(); }); it('reading a property with no env set throws a clear error', async () => { const mod = await import('./env'); expect(() => mod.env.supabaseUrl).toThrowError( /Missing required env var EXPO_PUBLIC_SUPABASE_URL/, ); }); it('reading a property after setting env returns the value and memoises', async () => { process.env.EXPO_PUBLIC_SUPABASE_URL = 'https://example.supabase.co'; process.env.EXPO_PUBLIC_SUPABASE_ANON_KEY = 'anon-123'; const mod = await import('./env'); expect(mod.env.supabaseUrl).toBe('https://example.supabase.co'); expect(mod.env.supabaseAnonKey).toBe('anon-123'); expect(mod.env.authRedirectUrl).toBe('netralax://auth/callback'); }); });