feat(core-shared/jobs): PayloadJobQueue

This commit is contained in:
2026-05-08 11:36:12 +02:00
parent b96cff34ba
commit 23a1faa002
2 changed files with 48 additions and 0 deletions

View File

@@ -0,0 +1,28 @@
import { describe, it, expect, vi } from "vitest";
import { PayloadJobQueue } from "@/jobs/payload-job-queue";
describe("PayloadJobQueue", () => {
it("delegates to payload.jobs.queue with the task slug and input", async () => {
const queueMock = vi.fn().mockResolvedValue({ id: "payload-job-1" });
const payload = { jobs: { queue: queueMock } } as never;
const queue = new PayloadJobQueue(payload);
const result = await queue.enqueue("blog.republish", { id: 1 });
expect(queueMock).toHaveBeenCalledWith({
task: "blog.republish",
input: { id: 1 },
waitUntil: undefined,
});
expect(result).toEqual({ jobId: "payload-job-1" });
});
it("forwards runAt as waitUntil", async () => {
const queueMock = vi.fn().mockResolvedValue({ id: "payload-job-2" });
const payload = { jobs: { queue: queueMock } } as never;
const queue = new PayloadJobQueue(payload);
const future = new Date(Date.now() + 5000);
await queue.enqueue("blog.task", {}, { runAt: future });
expect(queueMock).toHaveBeenCalledWith(
expect.objectContaining({ waitUntil: future }),
);
});
});