import assert from "node:assert/strict" import test from "node:test" import { getTableName } from "drizzle-orm" import { applyOutgoingRowCatalogDefaults } from "../src/mcp/outgoingRowDefaults" const catalog: Record = { products: [{ id: 1, name: "Kabel", description: "NYM-J 3x1,5", unit: 2, selling_price: 1.25, tax_percentage: 19 }], services: [{ id: 5, name: "Montage", description: "Montage vor Ort", unit: 3, sellingPrice: 50, sellingPriceComposed: { total: 55 }, taxPercentage: 7, costcentre: "cc" }], } const context: any = { tenantId: 7, server: { db: { select: () => ({ from: (table: any) => ({ where: async () => catalog[getTableName(table)] }) }) } } } test("selected products and services bring their description and editor defaults", async () => { const rows: any = await applyOutgoingRowCatalogDefaults(context, [ { mode: "normal", product: 1, quantity: 3 }, JSON.stringify({ mode: "service", service: 5 }), { mode: "free", text: "Frei", descriptionText: "Alt" }, ]) assert.deepEqual(rows[0], { mode: "normal", product: 1, quantity: 3, text: "Kabel", description: "NYM-J 3x1,5", unit: 2, inputPrice: 1.25, price: 1.25, taxPercent: 19 }) assert.equal(rows[1].description, "Montage vor Ort") assert.equal(rows[1].price, 55) assert.equal(rows[1].costCentre, "cc") assert.equal(rows[2].description, "Alt") }) test("caller values win and unknown catalog entries are rejected", async () => { const [row]: any = await applyOutgoingRowCatalogDefaults(context, [{ mode: "normal", product: 1, description: "Eigene", price: 2, taxPercent: 7 }]) assert.equal(row.description, "Eigene") assert.equal(row.price, 2) assert.equal(row.taxPercent, 7) await assert.rejects(applyOutgoingRowCatalogDefaults(context, [{ mode: "normal", product: 9 }]), /Artikel 9 nicht gefunden/) })