feat: add queued image derivative lifecycle
This commit is contained in:
@@ -1,7 +1,11 @@
|
||||
import assert from 'node:assert/strict';
|
||||
import test from 'node:test';
|
||||
|
||||
import { runImageDerivativeJob } from '../src/image-derivative-worker.js';
|
||||
import {
|
||||
createInMemoryImageDerivativeQueue,
|
||||
processNextImageDerivativeJob,
|
||||
runImageDerivativeJob,
|
||||
} from '../src/image-derivative-worker.js';
|
||||
|
||||
test('completes an image derivative job after loading and processing the source', async () => {
|
||||
const calls = [];
|
||||
@@ -37,4 +41,29 @@ test('records a failed image derivative job without throwing worker errors', asy
|
||||
assert.equal(result.status, 'FAILED');
|
||||
assert.equal(result.error, 'source unavailable');
|
||||
assert.ok(result.failedAt instanceof Date);
|
||||
});
|
||||
|
||||
test('claims queued jobs and persists their processing lifecycle', async () => {
|
||||
const queue = createInMemoryImageDerivativeQueue();
|
||||
await queue.enqueue({ id: 'job-3', type: 'IMAGE_DERIVATIVES', sourceKey: 'queued.jpg', status: 'PENDING' });
|
||||
|
||||
const claimed = await queue.claimNext();
|
||||
assert.equal(claimed.status, 'PROCESSING');
|
||||
assert.equal(queue.getJob('job-3').status, 'PROCESSING');
|
||||
|
||||
const result = await processNextImageDerivativeJob({
|
||||
queue,
|
||||
async loadSource(sourceKey) {
|
||||
return { sourceKey, data: Buffer.from('queued-image') };
|
||||
},
|
||||
processor: {
|
||||
async process(source) {
|
||||
return [{ name: 'thumbnail', key: `${source.sourceKey}-thumbnail.webp` }];
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
assert.equal(result.status, 'COMPLETED');
|
||||
assert.equal(queue.getJob('job-3').status, 'COMPLETED');
|
||||
assert.equal(queue.getJob('job-3').derivatives[0].key, 'queued.jpg-thumbnail.webp');
|
||||
});
|
||||
Reference in New Issue
Block a user