Backfill the completed acquisitions, sales, dashboard, pricing, search, public detail, worker, migration, contracts, validation, tests, and implementation-status changes into one verified application slice.
71 lines
1.9 KiB
JavaScript
71 lines
1.9 KiB
JavaScript
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);
|
|
});
|