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), []); });