bmc_hub/tests/test_invoice_fee_order_ui.js
Christian 4871dd2d9e Add comprehensive test coverage for various modules
- Introduced tests for mail templates including ranking, rendering, and attachment handling.
- Added tests for time billing selection and approval processes, ensuring proper validation and state management.
- Implemented tests for case types in JavaScript, focusing on loading and editing functionality.
- Created tests for contact mail AI integration, ensuring proper parsing and error handling.
- Developed tests for dark theme CSS contrast and loading order.
- Added tests for invoice fee service, covering various scenarios including exemptions and invalid inputs.
- Implemented vendor resource tests, ensuring proper file handling and query validation.
2026-10-08 08:58:02 +02:00

17 lines
1.0 KiB
JavaScript

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);
});