const {test} = require('node:test'); const assert = require('node:assert/strict'); const fs = require('node:fs'); const vm = require('node:vm'); const text=fs.readFileSync('app/modules/orders/templates/detail.html','utf8'); const source=text.slice(text.indexOf(' function normalizeOrderLine('),text.indexOf(' async function loadOrder(')); const context={};vm.runInNewContext(source,context); test('order without cached line amount displays work plus saved fee correctly',()=>{ const work=context.normalizeOrderLine({quantity:2,unit_price:100}); const fee=context.normalizeOrderLine({source_type:'invoice_fee',quantity:1,unit_price:49,product_id:9}); assert.equal(work.amount+fee.amount,249);assert.equal(fee.product_id,9);assert.equal(fee.source_type,'invoice_fee'); }); test('explicit saved amount is preserved and fallback respects discount',()=>{ assert.equal(context.normalizeOrderLine({quantity:1,unit_price:100,amount:0}).amount,0); assert.equal(context.normalizeOrderLine({quantity:2,unit_price:100,discount_percentage:10}).amount,180); });