import assert from 'node:assert/strict'; import test from 'node:test'; import { runImageDerivativeJob } from '../src/image-derivative-worker.js'; test('completes an image derivative job after loading and processing the source', async () => { const calls = []; const result = await runImageDerivativeJob({ job: { id: 'job-1', type: 'IMAGE_DERIVATIVES', sourceKey: 'source.jpg', status: 'PENDING' }, async loadSource(sourceKey) { calls.push(`load:${sourceKey}`); return { sourceKey, data: Buffer.from('image') }; }, processor: { async process(source) { calls.push(`process:${source.sourceKey}`); return [{ name: 'thumbnail', key: 'source-thumbnail.webp' }]; }, }, }); assert.equal(result.status, 'COMPLETED'); assert.deepEqual(result.derivatives, [{ name: 'thumbnail', key: 'source-thumbnail.webp' }]); assert.deepEqual(calls, ['load:source.jpg', 'process:source.jpg']); assert.ok(result.completedAt instanceof Date); }); test('records a failed image derivative job without throwing worker errors', async () => { const result = await runImageDerivativeJob({ job: { id: 'job-2', type: 'IMAGE_DERIVATIVES', sourceKey: 'missing.jpg', status: 'PENDING' }, async loadSource() { throw new Error('source unavailable'); }, processor: { async process() { return []; } }, }); assert.equal(result.status, 'FAILED'); assert.equal(result.error, 'source unavailable'); assert.ok(result.failedAt instanceof Date); });