import { describe, it, expect } from 'vitest'; import { envSchema } from './env'; describe('envSchema', () => { it('should allow missing MAIL_HOST in development', () => { const result = envSchema.safeParse({ NEXT_PUBLIC_BASE_URL: 'http://localhost:3000', TARGET: 'development', }); expect(result.success).toBe(true); }); it('should require MAIL_HOST in production', () => { const result = envSchema.safeParse({ NEXT_PUBLIC_BASE_URL: 'https://example.com', TARGET: 'production', }); expect(result.success).toBe(false); if (!result.success) { expect(result.error.issues[0].message).toBe( 'MAIL_HOST is required in non-development environments', ); } }); it('should require MAIL_HOST in testing', () => { const result = envSchema.safeParse({ NEXT_PUBLIC_BASE_URL: 'https://testing.example.com', TARGET: 'testing', }); expect(result.success).toBe(false); if (!result.success) { expect(result.error.issues[0].message).toBe( 'MAIL_HOST is required in non-development environments', ); } }); it('should require MAIL_HOST in staging', () => { const result = envSchema.safeParse({ NEXT_PUBLIC_BASE_URL: 'https://staging.example.com', TARGET: 'staging', }); expect(result.success).toBe(false); if (!result.success) { expect(result.error.issues[0].message).toBe( 'MAIL_HOST is required in non-development environments', ); } }); it('should pass if MAIL_HOST is provided in production', () => { const result = envSchema.safeParse({ NEXT_PUBLIC_BASE_URL: 'https://example.com', TARGET: 'production', MAIL_HOST: 'smtp.example.com', }); expect(result.success).toBe(true); }); });