Deterministic queue clocks, lifecycle helpers, state assertions, and worker draining.
import {
assertQueueStates,
drainQueueWorker,
ManualQueueClock,
} from "@lucid-softworks/queue-testkit";
import { QueueClient } from "@lucid-softworks/queue-client";
import { MemoryQueueStore } from "@lucid-softworks/queue-store-memory";
import { QueueWorker } from "@lucid-softworks/queue-worker";
const clock = new ManualQueueClock();
const store = new MemoryQueueStore();
const client = new QueueClient(store, {
clock,
idFactory: () => "job",
});
await client.enqueue("work", "data");
const worker = new QueueWorker(
store,
{ work: (data) => data },
{ clock, id: "worker" },
);
await drainQueueWorker(worker);
assertQueueStates(await store.list(), { job: "completed" });Manual sleeps resolve only when advance reaches their deadline and reject on
abort. queueEventTypes accepts an event bus or event array. Assertion failures
include the expected and observed job states.