Files
agentic-dev/packages/core-testing/src/instrumentation/recording-data-delete.test.ts

42 lines
1.4 KiB
TypeScript

import { describe, it, expect } from "vitest";
import { RecordingDataDelete } from "./recording-data-delete";
describe("RecordingDataDelete", () => {
it("records deleteSubjectData calls", async () => {
const deleter = new RecordingDataDelete();
await deleter.deleteSubjectData("alice", "soft");
expect(deleter.calls).toHaveLength(1);
expect(deleter.calls[0]).toEqual({ subjectId: "alice", mode: "soft" });
});
it("returns a DeletionCertificate with the correct shape", async () => {
const deleter = new RecordingDataDelete();
const cert = await deleter.deleteSubjectData("alice", "cascade-hard");
expect(cert.subjectId).toBe("alice");
expect(cert.mode).toBe("cascade-hard");
expect(cert.reason).toBe("art-17-request");
expect(cert.affected).toEqual([]);
expect(typeof cert.auditEntryId).toBe("string");
expect(typeof cert.timestamp).toBe("string");
});
it("records multiple calls in order", async () => {
const deleter = new RecordingDataDelete();
await deleter.deleteSubjectData("alice", "soft");
await deleter.deleteSubjectData("bob", "cascade-hard");
expect(deleter.calls[0]?.mode).toBe("soft");
expect(deleter.calls[1]?.mode).toBe("cascade-hard");
});
it("reset() clears recorded calls", async () => {
const deleter = new RecordingDataDelete();
await deleter.deleteSubjectData("alice", "soft");
deleter.reset();
expect(deleter.calls).toHaveLength(0);
});
});