import test from 'node:test' import assert from 'node:assert/strict' import { unitRate, isValidQuantity, isValidPrice, lineAmount, baseUnitPrice, } from '../src/utils/transaction.js' test('source-unit pricing converts exactly once', () => { const row = { source_unit: 7, units: [{ unit_id: 7, rate: 24 }], quantity: 2, unit_price: 120, } assert.equal(unitRate(row), 24) assert.equal(lineAmount(row), 240) assert.equal(baseUnitPrice(row), 5) }) test('base-unit rows keep their entered amount', () => { const row = { source_unit: null, quantity: 3, unit_price: 12.5, units: [] } assert.equal(unitRate(row), 1) assert.equal(lineAmount(row), 37.5) assert.equal(baseUnitPrice(row), 12.5) }) test('quantity and price validators reject non-finite or out-of-range values', () => { assert.equal(isValidQuantity({ quantity: 0.001 }), true) assert.equal(isValidQuantity({ quantity: 0 }), false) assert.equal(isValidQuantity({ quantity: Number.NaN }), false) assert.equal(isValidQuantity({ quantity: 1e9 + 1 }), false) assert.equal(isValidPrice({ unit_price: 0.01 }), true) assert.equal(isValidPrice({ unit_price: 0 }), false) assert.equal(isValidPrice({ unit_price: Number.POSITIVE_INFINITY }), false) assert.equal(isValidPrice({ unit_price: 1e9 + 1 }), false) })