add failing tests for dokument-store IndexedDB wrapper
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
77
src/shared/hooks/dokument-store.test.ts
Normal file
77
src/shared/hooks/dokument-store.test.ts
Normal file
@@ -0,0 +1,77 @@
|
||||
import "fake-indexeddb/auto";
|
||||
import { afterEach, beforeEach, describe, expect, it } from "vitest";
|
||||
import {
|
||||
deleteAllDokumente,
|
||||
deleteDokument,
|
||||
deleteDokumenteForSprechstunde,
|
||||
getDokumente,
|
||||
saveDokument,
|
||||
} from "./dokument-store";
|
||||
|
||||
function makeFile(name: string, content = "test") {
|
||||
return new File([content], name, { type: "image/jpeg" });
|
||||
}
|
||||
|
||||
describe("dokument-store", () => {
|
||||
beforeEach(async () => {
|
||||
await deleteAllDokumente();
|
||||
});
|
||||
|
||||
afterEach(async () => {
|
||||
await deleteAllDokumente();
|
||||
});
|
||||
|
||||
it("saves and retrieves a document", async () => {
|
||||
const id = await saveDokument(1, makeFile("ptv11.jpg"));
|
||||
expect(id).toBeGreaterThan(0);
|
||||
|
||||
const docs = await getDokumente(1);
|
||||
expect(docs).toHaveLength(1);
|
||||
expect(docs[0].name).toBe("ptv11.jpg");
|
||||
expect(docs[0].mimeType).toBe("image/jpeg");
|
||||
expect(docs[0].sprechstundeId).toBe(1);
|
||||
expect(docs[0].blob).toBeInstanceOf(Blob);
|
||||
expect(docs[0].erstelltAm).toMatch(/^\d{4}-\d{2}-\d{2}$/);
|
||||
});
|
||||
|
||||
it("retrieves only documents for the given sprechstundeId", async () => {
|
||||
await saveDokument(1, makeFile("a.jpg"));
|
||||
await saveDokument(2, makeFile("b.jpg"));
|
||||
|
||||
const docs1 = await getDokumente(1);
|
||||
const docs2 = await getDokumente(2);
|
||||
expect(docs1).toHaveLength(1);
|
||||
expect(docs2).toHaveLength(1);
|
||||
expect(docs1[0].name).toBe("a.jpg");
|
||||
expect(docs2[0].name).toBe("b.jpg");
|
||||
});
|
||||
|
||||
it("deletes a single document by id", async () => {
|
||||
const id = await saveDokument(1, makeFile("a.jpg"));
|
||||
await deleteDokument(id);
|
||||
|
||||
const docs = await getDokumente(1);
|
||||
expect(docs).toHaveLength(0);
|
||||
});
|
||||
|
||||
it("deletes all documents for a sprechstunde", async () => {
|
||||
await saveDokument(1, makeFile("a.jpg"));
|
||||
await saveDokument(1, makeFile("b.jpg"));
|
||||
await saveDokument(2, makeFile("c.jpg"));
|
||||
|
||||
await deleteDokumenteForSprechstunde(1);
|
||||
|
||||
expect(await getDokumente(1)).toHaveLength(0);
|
||||
expect(await getDokumente(2)).toHaveLength(1);
|
||||
});
|
||||
|
||||
it("deletes all documents across all sprechstunden", async () => {
|
||||
await saveDokument(1, makeFile("a.jpg"));
|
||||
await saveDokument(2, makeFile("b.jpg"));
|
||||
|
||||
await deleteAllDokumente();
|
||||
|
||||
expect(await getDokumente(1)).toHaveLength(0);
|
||||
expect(await getDokumente(2)).toHaveLength(0);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user