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