import assert from 'node:assert/strict'; import test from 'node:test'; import { calculateAcquisitionCostBasis, createAcquisition, } from '../../src/modules/acquisitions/domain/acquisition.js'; import { calculateMedianPriceMinor, createPricingObservation, identifyOutlierPrices, } from '../../src/modules/pricing/domain/pricing-observation.js'; test('calculates acquisition cost basis from all cost components', () => { const total = calculateAcquisitionCostBasis({ costMinor: 1000, shippingMinor: 150, taxMinor: 75, otherFeesMinor: 50, estimatedTradeValueMinor: 200, }); assert.equal(total, 1075); }); test('rejects negative acquisition values and missing identity fields', () => { assert.throws( () => createAcquisition({ inventoryItemId: 'inventory-item-id', method: 'PURCHASE', costMinor: -1, }), /must be a non-negative integer minor unit/, ); assert.throws( () => createAcquisition({ inventoryItemId: '', method: 'PURCHASE', costMinor: 1000, }), /Inventory item ID is required/, ); }); test('creates pricing observations and calculates a median observed price', () => { const observation = createPricingObservation({ productId: 'product-id', inventoryItemId: 'inventory-item-id', providerId: 'ebay', priceMinor: 2499, currency: 'USD', sourceIdentifier: 'listing-1', conditionId: 'condition-id', }); assert.equal(observation.currency, 'USD'); assert.equal(observation.priceMinor, 2499); assert.equal(calculateMedianPriceMinor([1199, 2499, 2000]), 2000); }); test('identifies extreme pricing observations without discarding normal values', () => { assert.deepEqual([...identifyOutlierPrices([1000, 1050, 1100, 5000])], [5000]); assert.equal(identifyOutlierPrices([1000, 1050, 1100]).size, 0); });