Files
dbx/apps/desktop/src/lib/__tests__/table/batchTableTruncate.spec.ts
T

34 lines
1.1 KiB
TypeScript
Vendored

import { describe, expect, it, vi } from "vitest";
import { runBatchTableTruncate } from "@/lib/table/batchTableTruncate";
describe("batch table truncate", () => {
it("refreshes completed targets before propagating a later failure", async () => {
const execute = vi.fn(async (table: string) => {
if (table === "locked") throw new Error("permission denied");
});
const refreshSucceeded = vi.fn(async () => undefined);
await expect(runBatchTableTruncate(["orders", "locked", "customers"], execute, refreshSucceeded)).rejects.toThrow("permission denied");
expect(execute).toHaveBeenCalledTimes(2);
expect(refreshSucceeded).toHaveBeenCalledOnce();
expect(refreshSucceeded).toHaveBeenCalledWith(["orders"]);
});
it("does not refresh when the first target fails", async () => {
const refreshSucceeded = vi.fn(async () => undefined);
await expect(
runBatchTableTruncate(
["locked"],
async () => {
throw new Error("permission denied");
},
refreshSucceeded,
),
).rejects.toThrow("permission denied");
expect(refreshSucceeded).not.toHaveBeenCalled();
});
});