queuex-sdk
Version:
A TypeScript-based queue management SDK with Redis support
49 lines (48 loc) • 2.63 kB
JavaScript
"use strict";
// import { QueueX, JobState, QueueXEvent } from './index';
// async function runTests() {
// console.log('Starting QueueX SDK tests with scheduling...');
// const queuex = new QueueX({
// redisConnection: 'redis://localhost:6379',
// defaultConcurrency: 2,
// });
// console.log('Test 1: Creating a queue...');
// const queue = queuex.createQueue('test-queue', { maxConcurrency: 2 });
// console.assert(queue.name === 'test-queue', 'Queue creation failed');
// console.log('Test 1 passed: Queue created successfully');
// console.log('Test 2: Enqueuing a delayed job (500ms)...');
// const delayedJob = await queuex.enqueue('test-queue', { task: 'Delayed Task' }, { delay: 500 });
// console.assert(delayedJob.state === JobState.DELAYED, 'Delayed job should be DELAYED');
// console.assert(delayedJob.scheduledAt! > Date.now(), 'Scheduled time should be in the future');
// console.log('Test 2 passed: Delayed job enqueued correctly');
// console.log('Test 3: Processing delayed job...');
// let processed = false;
// queuex.on('jobDelayed', (job) => console.log(`Event: Job ${job.id} delayed (${job.data.task})`));
// queuex.on('jobReady', (job) => console.log(`Event: Job ${job.id} ready (${job.data.task})`));
// queuex.on('jobStarted', (job) => console.log(`Event: Job ${job.id} started (${job.data.task})`));
// queuex.on('jobCompleted', (job) => {
// console.log(`Event: Job ${job.id} completed (${job.data.task})`);
// processed = true;
// });
// queuex.startWorker('test-queue', async (job) => {
// return `Processed ${job.data.task}`;
// });
// await new Promise((resolve) => setTimeout(resolve, 1000));
// console.assert(processed, 'Delayed job was not processed');
// console.log('Test 3 passed: Delayed job processed after delay');
// console.log('Test 4: Verifying events in Redis...');
// const events = await queuex.getEvents(delayedJob.id);
// console.log('Delayed job events:', events);
// console.assert(events.some((e) => e.startsWith('jobDelayed')), 'Delayed event missing');
// console.assert(events.some((e) => e.startsWith('jobReady')), 'Ready event missing');
// console.assert(events.some((e) => e.startsWith('jobCompleted')), 'Completed event missing');
// console.log('Test 4 passed: Events stored correctly');
// console.log('Test 5: Shutting down...');
// await queuex.shutdown();
// console.log('Test 5 passed: Shutdown completed');
// console.log('All tests completed successfully!');
// }
// runTests().catch((error) => {
// console.error('Test failed:', error);
// process.exit(1);
// });