import { describe, it, expect } from 'vitest'; import { validateFile, MAX_SIZE_BYTES } from './validateFile'; function makeFile(type: string, size: number): File { return new File(['x'.repeat(Math.min(size, 100))], 'test.file', { type }); } describe('validateFile', () => { it('returns null for a valid PDF under 50 MB', () => { const file = makeFile('application/pdf', 1024); expect(validateFile(file)).toBeNull(); }); it('returns null for a valid JPEG', () => { expect(validateFile(makeFile('image/jpeg', 1024))).toBeNull(); }); it('returns null for a valid PNG', () => { expect(validateFile(makeFile('image/png', 1024))).toBeNull(); }); it('returns null for a valid TIFF', () => { expect(validateFile(makeFile('image/tiff', 1024))).toBeNull(); }); it('returns "type" for an unsupported MIME type', () => { const file = makeFile('text/plain', 100); expect(validateFile(file)).toBe('type'); }); it('returns "size" for a file exceeding 50 MB', () => { const oversized = new File(['x'], 'big.pdf', { type: 'application/pdf' }); Object.defineProperty(oversized, 'size', { value: MAX_SIZE_BYTES + 1 }); expect(validateFile(oversized)).toBe('size'); }); });