import path from "node:path"; import assert from "node:assert/strict"; import { describe, it } from "node:test"; import { migrate } from "drizzle-orm/better-sqlite3/migrator"; import { createDatabaseContext } from "../src/db/database-context.js"; import { DocumentBrandingRepository } from "../src/db/repositories/document-branding.repository.js"; import { officeProfileFields } from "../src/shared/constants/project-cover.js"; import { updateOfficeProfileSchema } from "../src/shared/validation/document-branding.schemas.js"; function createRepository() { const context = createDatabaseContext(":memory:"); migrate(context.db, { migrationsFolder: path.resolve("src", "db", "migrations"), }); return { context, repository: new DocumentBrandingRepository(context.db) }; } describe("document branding repository", () => { it("stores, replaces and removes the office profile", () => { const { context, repository } = createRepository(); try { assert.deepEqual(repository.getSettings(officeProfileFields), { officeName: null, officeAddress: null, }); repository.setSettings( updateOfficeProfileSchema.parse({ officeName: " kbp köhler beraten + planen GmbH ", officeAddress: "Straße 1\n12345 Ort", }) ); assert.deepEqual(repository.getSettings(officeProfileFields), { officeName: "kbp köhler beraten + planen GmbH", officeAddress: "Straße 1\n12345 Ort", }); repository.setSettings( updateOfficeProfileSchema.parse({ officeName: "Büro", officeAddress: "" }) ); assert.deepEqual(repository.getSettings(officeProfileFields), { officeName: "Büro", officeAddress: null, }); assert.equal( updateOfficeProfileSchema.safeParse({ officeName: "x".repeat(201), officeAddress: null }) .success, false ); } finally { context.close(); } }); it("replaces and deletes the logo", () => { const { context, repository } = createRepository(); try { repository.upsert({ key: "logo", mimeType: "image/png", fileName: "a.png", data: Buffer.from([1, 2, 3]), }); repository.upsert({ key: "logo", mimeType: "image/svg+xml", fileName: "b.svg", data: Buffer.from(""), }); const logo = repository.get("logo"); assert.equal(logo?.mimeType, "image/svg+xml"); assert.equal(logo?.data.toString(), ""); assert.equal(repository.delete("logo"), true); assert.equal(repository.get("logo"), undefined); } finally { context.close(); } }); });