import { URLValidator, ConfigValidator, TestConfiguration } from '../src/utils/validation';
describe('Input Validation', () => {
describe('URLValidator', () => {
it('should return true for valid URLs', () => {
expect(URLValidator.validate('https://www.google.com').isValid).toBe(true);
expect(URLValidator.validate('http://example.com/path').isValid).toBe(true);
});
it('should return false for invalid URLs', () => {
expect(URLValidator.validate('google.com').isValid).toBe(false);
expect(URLValidator.validate('ftp://example.com').isValid).toBe(false);
expect(URLValidator.validate('not a url').isValid).toBe(false);
});
it('should return false for localhost', () => {
expect(URLValidator.validate('http://localhost:3000').isValid).toBe(false);
});
});
describe('ConfigValidator', () => {
it('should return a valid configuration for valid input', () => {
const config: Partial<TestConfiguration> = { wcagLevel: 'A', wcagVersion: '2.2' };
const validatedConfig = ConfigValidator.validateTestConfiguration(config);
expect(validatedConfig.wcagLevel).toBe('A');
expect(validatedConfig.wcagVersion).toBe('2.2');
});
it('should throw an error for invalid WCAG level', () => {
const config: Partial<TestConfiguration> = { wcagLevel: 'Z' as any };
expect(() => ConfigValidator.validateTestConfiguration(config)).toThrow();
});
});
});