31 lines
1.1 KiB
TypeScript
31 lines
1.1 KiB
TypeScript
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');
|
|
});
|
|
});
|