46 lines
1.2 KiB
JavaScript
46 lines
1.2 KiB
JavaScript
import { describe, expect, it, vi } from "vitest";
|
|
|
|
import { createJobFinalizeQueue } from "../features/stacks/finalizeQueue.js";
|
|
|
|
describe("createJobFinalizeQueue", () => {
|
|
it("processes multiple job ids instead of dropping overlaps", async () => {
|
|
vi.useFakeTimers();
|
|
const calls = [];
|
|
const queue = createJobFinalizeQueue({
|
|
defaultDelayMs: 25,
|
|
postJob: async (jobId) => {
|
|
calls.push(jobId);
|
|
},
|
|
});
|
|
|
|
queue.schedule("job-a");
|
|
queue.schedule("job-b");
|
|
|
|
await vi.advanceTimersByTimeAsync(25);
|
|
|
|
expect(calls).toEqual(["job-a", "job-b"]);
|
|
queue.dispose();
|
|
vi.useRealTimers();
|
|
});
|
|
|
|
it("coalesces duplicate schedules for the same job id", async () => {
|
|
vi.useFakeTimers();
|
|
const calls = [];
|
|
const queue = createJobFinalizeQueue({
|
|
defaultDelayMs: 50,
|
|
postJob: async (jobId) => {
|
|
calls.push(jobId);
|
|
},
|
|
});
|
|
|
|
queue.schedule("job-a");
|
|
queue.schedule("job-a");
|
|
|
|
await vi.advanceTimersByTimeAsync(50);
|
|
|
|
expect(calls).toEqual(["job-a"]);
|
|
queue.dispose();
|
|
vi.useRealTimers();
|
|
});
|
|
});
|