@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.
72 lines (67 loc) • 3.68 kB
JavaScript
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var vitest = require('vitest');
var backend = require('./backend.cjs');
function defineDeleteFinishedJobsTestSuite() {
vitest.describe("deleteFinishedJobs", () => {
vitest.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.backend.createNewJob(job);
insertedJob = await backend.backend.createNewJob(job);
await backend.backend.updateJob({ ...insertedJob, state: "canceled", canceled_at: new Date(2000, 0, 1) });
insertedJob = await backend.backend.createNewJob(job);
await backend.backend.updateJob({ ...insertedJob, state: "claimed" });
insertedJob = await backend.backend.createNewJob(job);
await backend.backend.updateJob({ ...insertedJob, state: "completed", completed_at: new Date(2000, 0, 1) });
insertedJob = await backend.backend.createNewJob(job);
await backend.backend.updateJob({ ...insertedJob, state: "failed", failed_at: new Date(2000, 0, 1) });
insertedJob = await backend.backend.createNewJob(job);
await backend.backend.updateJob({ ...insertedJob, state: "running" });
await backend.backend.deleteFinishedJobs(new Date());
const allJobs = await backend.backend.listJobs({});
expect(allJobs).toHaveLength(3);
});
vitest.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.backend.createNewJob(job);
insertedJob = await backend.backend.createNewJob(job);
await backend.backend.updateJob({ ...insertedJob, state: "canceled", canceled_at: new Date(2024, 0, 1) });
insertedJob = await backend.backend.createNewJob(job);
await backend.backend.updateJob({ ...insertedJob, state: "claimed" });
insertedJob = await backend.backend.createNewJob(job);
await backend.backend.updateJob({ ...insertedJob, state: "completed", completed_at: new Date(2024, 0, 1) });
insertedJob = await backend.backend.createNewJob(job);
await backend.backend.updateJob({ ...insertedJob, state: "failed", failed_at: new Date(2024, 0, 1) });
insertedJob = await backend.backend.createNewJob(job);
await backend.backend.updateJob({ ...insertedJob, state: "running" });
await backend.backend.deleteFinishedJobs(new Date(0));
const allJobs = await backend.backend.listJobs({});
expect(allJobs).toHaveLength(6);
});
vitest.it("should not do anything if no jobs", async () => {
await backend.backend.deleteFinishedJobs(new Date(0));
const allJobs = await backend.backend.listJobs({});
expect(allJobs).toHaveLength(0);
});
});
}
exports.default = defineDeleteFinishedJobsTestSuite;
//# sourceMappingURL=deleteFinishedJobs.cjs.map