UNPKG

@accounter/server

Version:
50 lines 2.06 kB
import { describe, expect, it, vi } from 'vitest'; import { BusinessUsageProvider } from '../businesses-usage.provider.js'; function createProvider(rows) { const query = vi.fn().mockResolvedValue({ rows, rowCount: rows.length }); const db = { query }; return { provider: new BusinessUsageProvider(db), query }; } describe('BusinessUsageProvider', () => { it('returns an empty map when no ids are requested', async () => { const { provider, query } = createProvider([]); const result = await provider.getUsageByBusinessIds([]); expect(result.size).toBe(0); expect(query).not.toHaveBeenCalled(); }); it('runs a single combined query and merges per-source rows by business id', async () => { const { provider, query } = createProvider([ { business_id: 'b1', source: 'transactions', count: '3' }, { business_id: 'b1', source: 'documents', count: '2' }, { business_id: 'b1', source: 'misc_expenses', count: '1' }, { business_id: 'b1', source: 'ledger', count: '5' }, ]); const result = await provider.getUsageByBusinessIds(['b1']); expect(query).toHaveBeenCalledTimes(1); expect(result.get('b1')).toEqual({ transactions: 3, documents: 2, miscExpenses: 1, ledgerRecords: 5, }); }); it('defaults every requested business to zero counts', async () => { const { provider } = createProvider([ { business_id: 'b1', source: 'transactions', count: '4' }, ]); const result = await provider.getUsageByBusinessIds(['b1', 'b2']); expect(result.get('b1')).toEqual({ transactions: 4, documents: 0, miscExpenses: 0, ledgerRecords: 0, }); expect(result.get('b2')).toEqual({ transactions: 0, documents: 0, miscExpenses: 0, ledgerRecords: 0, }); }); }); //# sourceMappingURL=businesses-usage.provider.test.js.map