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