import { describe, it, expect, beforeEach } from '@jest/globals';
import { validateEnvironment, EnvironmentError } from '../../src/utils/env.js';
describe('Environment Validation', () => {
const originalEnv = process.env;
beforeEach(() => {
process.env = { ...originalEnv };
});
it('should validate correct webhook URL', () => {
process.env.DISCORD_WEBHOOK_URL =
'https://discord.com/api/webhooks/123456789/abcdef123456';
const config = validateEnvironment();
expect(config.webhookUrl).toBe(process.env.DISCORD_WEBHOOK_URL);
});
it('should throw error when webhook URL is missing', () => {
delete process.env.DISCORD_WEBHOOK_URL;
expect(() => validateEnvironment()).toThrow(EnvironmentError);
expect(() => validateEnvironment()).toThrow(
'DISCORD_WEBHOOK_URL is required'
);
});
it('should throw error for invalid webhook URL format', () => {
process.env.DISCORD_WEBHOOK_URL = 'https://invalid-url.com/webhook';
expect(() => validateEnvironment()).toThrow(EnvironmentError);
expect(() => validateEnvironment()).toThrow('valid Discord webhook URL');
});
it('should use default port when not specified', () => {
process.env.DISCORD_WEBHOOK_URL =
'https://discord.com/api/webhooks/123/abc';
delete process.env.PORT;
const config = validateEnvironment();
expect(config.port).toBe(3000);
});
});