Backfill the completed acquisitions, sales, dashboard, pricing, search, public detail, worker, migration, contracts, validation, tests, and implementation-status changes into one verified application slice.
84 lines
1.8 KiB
JavaScript
84 lines
1.8 KiB
JavaScript
import assert from "node:assert/strict";
|
|
import test from "node:test";
|
|
|
|
import {
|
|
calculateNetSaleProceeds,
|
|
createSale,
|
|
createSaleItem,
|
|
} from "../../src/modules/sales/domain/sale.js";
|
|
|
|
test("creates a valid sale record and calculates net proceeds after fees", () => {
|
|
const sale = createSale({
|
|
sellerId: "seller-id",
|
|
saleDate: "2026-09-08",
|
|
saleLocation: "eBay",
|
|
soldPriceMinor: 4999,
|
|
currency: "USD",
|
|
platformFeesMinor: 300,
|
|
paymentProcessingFeesMinor: 120,
|
|
shippingCostMinor: 50,
|
|
taxesMinor: 90,
|
|
otherFeesMinor: 40,
|
|
buyerName: "Alex",
|
|
buyerContact: "alex@example.com",
|
|
});
|
|
|
|
assert.equal(sale.soldPriceMinor, 4999);
|
|
assert.equal(sale.currency, "USD");
|
|
assert.equal(
|
|
calculateNetSaleProceeds({
|
|
soldPriceMinor: 4999,
|
|
platformFeesMinor: 300,
|
|
paymentProcessingFeesMinor: 120,
|
|
shippingCostMinor: 50,
|
|
taxesMinor: 90,
|
|
otherFeesMinor: 40,
|
|
}),
|
|
4399,
|
|
);
|
|
});
|
|
|
|
test("rejects invalid sales and negative fee values", () => {
|
|
assert.throws(
|
|
() =>
|
|
createSale({
|
|
sellerId: "seller-id",
|
|
saleDate: "2026-09-08",
|
|
soldPriceMinor: 0,
|
|
}),
|
|
/must be a positive integer minor unit/,
|
|
);
|
|
|
|
assert.throws(
|
|
() =>
|
|
createSaleItem({
|
|
saleId: "sale-id",
|
|
inventoryItemId: "inventory-item-id",
|
|
soldPriceMinor: 2000,
|
|
costBasisMinor: -1,
|
|
}),
|
|
/must be a non-negative integer minor unit/,
|
|
);
|
|
|
|
assert.throws(
|
|
() =>
|
|
createSale({
|
|
sellerId: "seller-id",
|
|
saleDate: "2026-02-30",
|
|
soldPriceMinor: 2000,
|
|
}),
|
|
/must be a valid ISO date/,
|
|
);
|
|
|
|
assert.throws(
|
|
() =>
|
|
createSale({
|
|
sellerId: "seller-id",
|
|
saleDate: "2026-09-08",
|
|
soldPriceMinor: 2000,
|
|
currency: "US dollars",
|
|
}),
|
|
/must be a three-letter ISO currency code/,
|
|
);
|
|
});
|