UNPKG

node-resque

Version:

an opinionated implementation of resque in node

85 lines (73 loc) 2.18 kB
import { Queue, Worker, Scheduler, Job } from "../../src"; import specHelper from "../utils/specHelper"; const connectionDetails = { pkg: "ioredis", host: "127.0.0.1", port: 6379, database: parseInt(process.env.JEST_WORKER_ID || "0"), }; const jobs = { add: { perform: async (a, b) => { const response = a + b; return response; }, } as Job<any>, }; describe("testing with ioredis package", () => { let queue: Queue; let scheduler: Scheduler; let worker: Worker; afterAll(async () => { await queue.end(); await scheduler.end(); await worker.end(); }); test("a queue can be created", async () => { queue = new Queue({ connection: connectionDetails }, jobs); await queue.connect(); }); test("a scheduler can be created", async () => { scheduler = new Scheduler({ connection: connectionDetails }, jobs); await scheduler.connect(); // await scheduler.start(); }); test("a worker can be created", async () => { worker = new Worker( { connection: connectionDetails, queues: ["math"], timeout: specHelper.timeout, }, jobs, ); await worker.connect(); // worker.start(); }); test("a job can be enqueued", async () => { await queue.enqueueIn(1, "math", "add", [1, 2]); const times = await queue.scheduledAt("math", "add", [1, 2]); expect(times.length).toBe(1); }); test("the scheduler can promote the job", async () => { await scheduler.poll(); const times = await queue.scheduledAt("math", "add", [1, 2]); expect(times.length).toBe(0); const jobsLength = await queue.length("math"); expect(jobsLength).toBe(1); }); test("the worker can work the job", async () => { await new Promise(async (resolve) => { await worker.start(); worker.on("success", async (q, job, result, duration) => { expect(q).toBe("math"); expect(job.class).toBe("add"); expect(result).toBe(3); expect(worker.result).toBe(result); expect(duration).toBeGreaterThanOrEqual(0); worker.removeAllListeners("success"); resolve(null); }); }); }); });