39 lines
1.5 KiB
TypeScript
39 lines
1.5 KiB
TypeScript
import { describe, expect, it } from 'vitest';
|
|
import { analyzePickedUploadFiles } from '@/utils/upload/analyzePickedUploadFiles';
|
|
|
|
const makeFile = (name: string, type: string, size: number): File =>
|
|
new File([new Uint8Array(size)], name, { type });
|
|
|
|
describe('analyzePickedUploadFiles', () => {
|
|
const maxImageBytes = 100;
|
|
const maxQueueSize = 2;
|
|
|
|
it('accepts images within size and queue limits', () => {
|
|
const picked = [makeFile('a.png', 'image/png', 50), makeFile('b.jpg', 'image/jpeg', 80)];
|
|
|
|
const result = analyzePickedUploadFiles(picked, maxImageBytes, maxQueueSize);
|
|
|
|
expect(result.accepted).toHaveLength(2);
|
|
expect(result.nonImageCount).toBe(0);
|
|
expect(result.oversizedImagesCount).toBe(0);
|
|
expect(result.queueOmittedImagesCount).toBe(0);
|
|
});
|
|
|
|
it('skips non-images and oversized files and caps the queue', () => {
|
|
const picked = [
|
|
makeFile('doc.pdf', 'application/pdf', 10),
|
|
makeFile('big.png', 'image/png', 200),
|
|
makeFile('1.png', 'image/png', 10),
|
|
makeFile('2.png', 'image/png', 10),
|
|
makeFile('3.png', 'image/png', 10)
|
|
];
|
|
|
|
const result = analyzePickedUploadFiles(picked, maxImageBytes, maxQueueSize);
|
|
|
|
expect(result.accepted.map(f => f.name)).toEqual(['1.png', '2.png']);
|
|
expect(result.nonImageCount).toBe(1);
|
|
expect(result.oversizedImagesCount).toBe(1);
|
|
expect(result.queueOmittedImagesCount).toBe(1);
|
|
});
|
|
});
|