Files
CapaKraken/packages/api/src/__tests__/dispo-management-support.test.ts
T

66 lines
2.2 KiB
TypeScript

import {
DispoStagedRecordType,
ImportBatchStatus,
StagedRecordStatus,
} from "@capakraken/db";
import { TRPCError } from "@trpc/server";
import { describe, expect, it } from "vitest";
import {
assertImportBatchCancelable,
buildCancelledImportBatchUpdateData,
buildDispoImportCommitAuditSummary,
buildResolvedStagedRecordUpdateData,
resolveDispoStagedRecordStatus,
resolveDispoStagedRecordStoreKey,
terminalImportBatchStatuses,
} from "../router/dispo-management-support.js";
describe("dispo management support", () => {
it("guards terminal import batches from cancellation", () => {
expect(terminalImportBatchStatuses).toEqual([
ImportBatchStatus.COMMITTED,
ImportBatchStatus.CANCELLED,
]);
expect(() => assertImportBatchCancelable({
id: "batch_1",
status: ImportBatchStatus.PENDING,
})).not.toThrow();
expect(() => assertImportBatchCancelable({
id: "batch_1",
status: ImportBatchStatus.CANCELLED,
})).toThrowError(
new TRPCError({
code: "BAD_REQUEST",
message: 'Cannot cancel batch in status "CANCELLED"',
}),
);
expect(buildCancelledImportBatchUpdateData()).toEqual({
status: ImportBatchStatus.CANCELLED,
});
});
it("maps staged-record actions and store keys", () => {
expect(resolveDispoStagedRecordStatus("APPROVE")).toBe(StagedRecordStatus.APPROVED);
expect(resolveDispoStagedRecordStatus("REJECT")).toBe(StagedRecordStatus.REJECTED);
expect(resolveDispoStagedRecordStatus("SKIP")).toBe(StagedRecordStatus.REJECTED);
expect(buildResolvedStagedRecordUpdateData("APPROVE")).toEqual({
status: StagedRecordStatus.APPROVED,
});
expect(resolveDispoStagedRecordStoreKey(DispoStagedRecordType.RESOURCE)).toBe("stagedResource");
expect(resolveDispoStagedRecordStoreKey(DispoStagedRecordType.AVAILABILITY_RULE)).toBe("stagedAvailabilityRule");
expect(resolveDispoStagedRecordStoreKey(DispoStagedRecordType.UNRESOLVED)).toBe("stagedUnresolvedRecord");
});
it("builds commit audit summaries", () => {
expect(buildDispoImportCommitAuditSummary({
created: 4,
rejected: 1,
})).toBe('Committed import batch ({"created":4,"rejected":1})');
});
});