UNPKG

@sidequest/backend-test

Version:

@sidequest/backend-test is a test suite for backend implementations of Sidequest, a Node.js library for managing background jobs and distributed queues.

68 lines (65 loc) 3.36 kB
import { describe, it } from 'vitest'; import { backend } from './backend.js'; function defineDeleteFinishedJobsTestSuite() { describe("deleteFinishedJobs", () => { it("should delete failed, completed, and canceled jobs", async () => { const job = { queue: "default", class: "TestJob", args: [{ foo: "bar" }], constructor_args: [{}], state: "waiting", script: "test.js", attempt: 0, max_attempts: 5, }; let insertedJob = await backend.createNewJob(job); insertedJob = await backend.createNewJob(job); await backend.updateJob({ ...insertedJob, state: "canceled", canceled_at: new Date(2000, 0, 1) }); insertedJob = await backend.createNewJob(job); await backend.updateJob({ ...insertedJob, state: "claimed" }); insertedJob = await backend.createNewJob(job); await backend.updateJob({ ...insertedJob, state: "completed", completed_at: new Date(2000, 0, 1) }); insertedJob = await backend.createNewJob(job); await backend.updateJob({ ...insertedJob, state: "failed", failed_at: new Date(2000, 0, 1) }); insertedJob = await backend.createNewJob(job); await backend.updateJob({ ...insertedJob, state: "running" }); await backend.deleteFinishedJobs(new Date()); const allJobs = await backend.listJobs({}); expect(allJobs).toHaveLength(3); }); it("should not delete failed, completed, and canceled jobs if do not meet cutoff", async () => { const job = { queue: "default", class: "TestJob", args: [{ foo: "bar" }], constructor_args: [{}], state: "waiting", script: "test.js", attempt: 0, max_attempts: 5, }; let insertedJob = await backend.createNewJob(job); insertedJob = await backend.createNewJob(job); await backend.updateJob({ ...insertedJob, state: "canceled", canceled_at: new Date(2024, 0, 1) }); insertedJob = await backend.createNewJob(job); await backend.updateJob({ ...insertedJob, state: "claimed" }); insertedJob = await backend.createNewJob(job); await backend.updateJob({ ...insertedJob, state: "completed", completed_at: new Date(2024, 0, 1) }); insertedJob = await backend.createNewJob(job); await backend.updateJob({ ...insertedJob, state: "failed", failed_at: new Date(2024, 0, 1) }); insertedJob = await backend.createNewJob(job); await backend.updateJob({ ...insertedJob, state: "running" }); await backend.deleteFinishedJobs(new Date(0)); const allJobs = await backend.listJobs({}); expect(allJobs).toHaveLength(6); }); it("should not do anything if no jobs", async () => { await backend.deleteFinishedJobs(new Date(0)); const allJobs = await backend.listJobs({}); expect(allJobs).toHaveLength(0); }); }); } export { defineDeleteFinishedJobsTestSuite as default }; //# sourceMappingURL=deleteFinishedJobs.js.map