import { test } from "node:test"; import assert from "node:assert/strict"; import { calculateTotalProductPrice } from "../../src/checkout/pricing.ts"; // Characterization: what calculateTotalProductPrice returns today. test("adds up the cover, pages and ruling prices", () => { assert.equal(calculateTotalProductPrice({ cover: { price: 14.9 }, pages: { price: 3 }, ruling: { price: 0.5 } }), 18.4); }); test("prices a standalone product from its cover alone", () => { assert.equal(calculateTotalProductPrice({ cover: { price: 9.5 } }), 9.5); }); test("counts a missing component or price as 0", () => { assert.equal(calculateTotalProductPrice({ cover: null, pages: { price: null }, ruling: undefined }), 0); }); test("returns 0 for a missing product instead of throwing", () => { assert.equal(calculateTotalProductPrice(null), 0); assert.equal(calculateTotalProductPrice(undefined), 0); }); test("does not round the sum", () => { assert.equal(calculateTotalProductPrice({ cover: { price: 0.1 }, pages: { price: 0.2 } }), 0.30000000000000004); });