34 lines
1.3 KiB
TypeScript
34 lines
1.3 KiB
TypeScript
import assert from "node:assert/strict"
|
|
import test from "node:test"
|
|
import { applyRowCostCentreAssignments } from "../src/modules/outgoing-document-cost-centres.service"
|
|
import { mcpToolMap } from "../src/mcp/registry"
|
|
|
|
test("changes only requested position cost centres", () => {
|
|
const rows = [
|
|
{ id: "row-1", description: "Montage", price: 100, costCentre: "old-1" },
|
|
{ id: "row-2", description: "Material", price: 50, costCentre: "old-2" },
|
|
]
|
|
|
|
assert.deepEqual(applyRowCostCentreAssignments(rows, [
|
|
{ rowId: "row-1", costcentre: "new-1" },
|
|
]), [
|
|
{ id: "row-1", description: "Montage", price: 100, costCentre: "new-1" },
|
|
rows[1],
|
|
])
|
|
})
|
|
|
|
test("rejects assignments for unknown document positions", () => {
|
|
assert.throws(
|
|
() => applyRowCostCentreAssignments([{ id: "row-1" }], [{ rowId: "missing", costcentre: null }]),
|
|
/Position missing.*nicht gefunden/,
|
|
)
|
|
})
|
|
|
|
test("registers a dedicated finalized-document cost centre tool", () => {
|
|
const tool = mcpToolMap.get("accounting.outgoing_documents.cost_centres.update")
|
|
|
|
assert.deepEqual(tool?.requiredPermissions, ["accounting.outgoing_documents.write"])
|
|
assert.deepEqual(tool?.inputSchema.required, ["id"])
|
|
assert.ok(tool?.inputSchema.anyOf)
|
|
})
|