refactor(insights): share workbook export and ai defaults

This commit is contained in:
2026-03-31 22:53:53 +02:00
parent 05eeaab3f7
commit 160ba99b5c
8 changed files with 272 additions and 61 deletions
+53
View File
@@ -0,0 +1,53 @@
import { describe, expect, it } from "vitest";
import {
createWorkbookArrayBuffer,
createWorkbookArrayBufferFromSheets,
} from "./workbook-export.js";
describe("workbook export helpers", () => {
it("writes a single-sheet workbook with primitive values", async () => {
const buffer = await createWorkbookArrayBuffer("Skills", [
["Skill", "Count", "Active"],
["TypeScript", 4, true],
["Planning", 2, false],
]);
const ExcelJS = await import("exceljs");
const workbook = new ExcelJS.Workbook();
await workbook.xlsx.load(Buffer.from(buffer));
const worksheet = workbook.getWorksheet("Skills");
expect(worksheet).toBeDefined();
expect(worksheet?.getRow(1).values).toEqual([, "Skill", "Count", "Active"]);
expect(worksheet?.getRow(2).values).toEqual([, "TypeScript", 4, true]);
expect(worksheet?.getRow(3).values).toEqual([, "Planning", 2, false]);
});
it("writes all provided sheets into the workbook", async () => {
const buffer = await createWorkbookArrayBufferFromSheets([
{
name: "Overview",
rows: [["Metric", "Value"], ["Resources", 12]],
},
{
name: "People Finder",
rows: [["Name", "Skills"], ["Peter Parker", "Staffing, Forecasting"]],
},
]);
const ExcelJS = await import("exceljs");
const workbook = new ExcelJS.Workbook();
await workbook.xlsx.load(Buffer.from(buffer));
expect(workbook.worksheets.map((sheet) => sheet.name)).toEqual([
"Overview",
"People Finder",
]);
expect(workbook.getWorksheet("Overview")?.getRow(2).values).toEqual([, "Resources", 12]);
expect(workbook.getWorksheet("People Finder")?.getRow(2).values).toEqual([
,
"Peter Parker",
"Staffing, Forecasting",
]);
});
});