Spaces:
Running
Running
File size: 1,458 Bytes
6c30253 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | import test from 'node:test';
import assert from 'node:assert/strict';
import { imageFilesFromClipboard, imageFilesFromDataTransfer } from '../src/image-input.js';
test('extracts one or more image files from clipboard items', () => {
const first = { name: 'first.png', type: 'image/png' };
const second = { name: 'second.jpg', type: 'image/jpeg' };
const files = imageFilesFromClipboard({
items: [
{ kind: 'string', type: 'text/plain', getAsFile: () => null },
{ kind: 'file', type: 'image/png', getAsFile: () => first },
{ kind: 'file', type: 'application/pdf', getAsFile: () => ({ type: 'application/pdf' }) },
{ kind: 'file', type: 'image/jpeg', getAsFile: () => second },
],
});
assert.deepEqual(files, [first, second]);
});
test('falls back to clipboard files and ignores non-images', () => {
const image = { name: 'screenshot.webp', type: 'image/webp' };
const files = imageFilesFromClipboard({
files: [image, { name: 'notes.txt', type: 'text/plain' }],
});
assert.deepEqual(files, [image]);
assert.deepEqual(imageFilesFromClipboard(null), []);
});
test('extracts only image files from a drag data transfer', () => {
const image = { name: 'photo.png', type: 'image/png' };
const files = imageFilesFromDataTransfer({ files: [
{ name: 'notes.txt', type: 'text/plain' },
image,
] });
assert.deepEqual(files, [image]);
assert.deepEqual(imageFilesFromDataTransfer(null), []);
});
|