testTransactionsAreAllOrNothing
A transaction's writes all happen or none do; jobs it enqueues wait for its commit.
import { enqueue, runJobs, transaction } from "#codebase/tcmts/server"; import { noted, notes, pantry } from "#codebase/tcmts/server/test"; import assert from "node:assert/strict"; export const testTransactionsAreAllOrNothing = async () => { await assert.rejects( transaction(async () => { await pantry.put("oats", { item: "oats", count: 1 }); enqueue(noted, "rolled back"); throw new Error("no"); }), /no/, ); assert.equal(await pantry.get("oats"), undefined); await transaction(async () => { await pantry.put("oats", { item: "oats", count: 1 }); enqueue(noted, "committed"); }); assert.equal((await pantry.get("oats"))?.count, 1); await runJobs({ all: true }); assert.deepEqual(notes, ["committed"]); }