UNPKG

@accounter/server

Version:
62 lines 2.53 kB
import { beforeEach, describe, expect, it, vi } from 'vitest'; import { AdminContextProvider } from '../providers/admin-context.provider.js'; describe('AdminContextProvider', () => { let provider; let dbProvider; let context; beforeEach(() => { dbProvider = { pool: { query: vi.fn(), }, healthCheck: vi.fn(), query: vi.fn(), }; context = { currentUser: { userId: 'test-owner-id' }, }; // Inject mocks: context (for ownerId) and dbProvider provider = new AdminContextProvider(context, dbProvider); }); it('should fetch admin context for the current user', async () => { dbProvider.query.mockResolvedValue({ rows: [{ owner_id: 'test-owner-id', default_local_currency: 'USD' }], rowCount: 1, }); const result = await provider.getAdminContext(); expect(result).toBeDefined(); expect(result?.default_local_currency).toBe('USD'); expect(dbProvider.query).toHaveBeenCalled(); }); it('should cache the result', async () => { dbProvider.query.mockResolvedValue({ rows: [{ owner_id: 'test-owner-id' }], rowCount: 1, }); await provider.getAdminContext(); await provider.getAdminContext(); expect(dbProvider.query).toHaveBeenCalledTimes(1); }); it('should invalidate cache on update', async () => { dbProvider.query.mockResolvedValueOnce({ rows: [{ owner_id: 'test-owner-id', default_local_currency: 'USD' }], rowCount: 1, }); // get await provider.getAdminContext(); expect(dbProvider.query).toHaveBeenCalledTimes(1); dbProvider.query.mockResolvedValueOnce({ rows: [{ owner_id: 'test-owner-id', default_local_currency: 'EUR' }], rowCount: 1 }); // update await provider.updateAdminContext({ defaultLocalCurrency: 'EUR' }); expect(dbProvider.query).toHaveBeenCalledTimes(2); // +1 for update dbProvider.query.mockResolvedValueOnce({ rows: [{ owner_id: 'test-owner-id', default_local_currency: 'EUR' }], rowCount: 1 }); // get again const result = await provider.getAdminContext(); expect(result?.default_local_currency).toBe('EUR'); expect(dbProvider.query).toHaveBeenCalledTimes(3); // +1 for refetch }); }); //# sourceMappingURL=admin-context.provider.test.js.map