UNPKG

queuex-sdk

Version:

A TypeScript-based queue management SDK with Redis support

49 lines (48 loc) 2.63 kB
"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); // });