Quality / test (push) Canceled after 0s
Add seller-scoped dashboard aggregation and API, private financial summary DTOs, responsive admin metrics, and authenticated E2E coverage.
32 lines
1.2 KiB
JavaScript
32 lines
1.2 KiB
JavaScript
import assert from 'node:assert/strict';
|
|
import test from 'node:test';
|
|
|
|
import { createDashboardService } from '../../src/modules/dashboard/services/dashboard-service.js';
|
|
|
|
test('aggregates seller dashboard counts and financial totals', async () => {
|
|
const service = createDashboardService({
|
|
productService: { async listBySellerId() { return [{ id: 'product-1' }]; } },
|
|
inventoryItemService: { async listBySellerId() { return [{ status: 'ACTIVE' }, { status: 'SOLD' }]; } },
|
|
listingService: { async list() { return [{ status: 'AVAILABLE', askingPriceMinor: 2500, imageCount: 1 }]; } },
|
|
saleService: { async list() { return [{ status: 'COMPLETED', netProceedsMinor: 2200, profitMinor: 700 }]; } },
|
|
acquisitionService: { async list() { return [{ costBasisMinor: 1500 }]; } },
|
|
});
|
|
|
|
const dashboard = await service.get({ sellerId: 'seller-1' });
|
|
assert.deepEqual(dashboard.counts, {
|
|
products: 1,
|
|
inventory: 2,
|
|
activeInventory: 1,
|
|
soldInventory: 1,
|
|
availableListings: 1,
|
|
sales: 1,
|
|
acquisitions: 1,
|
|
missingImages: 0,
|
|
});
|
|
assert.deepEqual(dashboard.financials, {
|
|
totalAcquisitionCostMinor: 1500,
|
|
totalAskingValueMinor: 2500,
|
|
totalNetSaleProceedsMinor: 2200,
|
|
totalProfitMinor: 700,
|
|
});
|
|
}); |