Mirror of https://github.com/roostorg/coop github.com/roostorg/coop
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

at 557ff54b2b435e5f1e789c6a8a4e1bebf2d7deb6 60 lines 2.3 kB view raw
1import { Kysely, type DatabaseConnection } from 'kysely'; 2 3import { makeMockWarehouseDialect } from '../../test/stubs/makeMockWarehouseKyselyDialect.js'; 4import { 5 makeMockPgDialect, 6 type MockPgExecute, 7} from '../../test/stubs/KyselyPg.js'; 8import { type UserStatisticsServiceWarehouse } from './dbTypes.js'; 9import { type makeFetchUserActionStatistics } from './fetchUserActionStatistics.js'; 10import { type makeFetchUserSubmissionStatistics } from './fetchUserSubmissionStatistics.js'; 11import { internalMakeUserStatisticsService } from './userStatisticsService.js'; 12 13describe('UserStatisticsService', () => { 14 describe('refreshUserScoresCache', () => { 15 test.todo('should fetch stats w/ batching and update accordingly'); 16 17 test('is a no-op without warehouse change streams', async () => { 18 const warehouseMock = jest 19 .fn<DatabaseConnection['executeQuery']>() 20 .mockImplementation(async (_query) => { 21 return { rows: [] }; 22 }); 23 24 const pgReadMock = jest 25 .fn<MockPgExecute>() 26 .mockResolvedValue({ rows: [], command: 'SELECT', rowCount: 0 }); 27 28 const pgWriteMock = jest 29 .fn<MockPgExecute>() 30 .mockResolvedValue({ rows: [], command: 'SELECT', rowCount: 0 }); 31 32 const fetchUserActionStatisticsMock = jest 33 .fn<ReturnType<typeof makeFetchUserActionStatistics>>() 34 .mockResolvedValue([]); 35 36 const fetchUserSubmissionStatisticsMock = jest 37 .fn<ReturnType<typeof makeFetchUserSubmissionStatistics>>() 38 .mockResolvedValue([]); 39 40 const warehouseKysely = new Kysely<UserStatisticsServiceWarehouse>({ 41 dialect: makeMockWarehouseDialect(warehouseMock), 42 }); 43 44 const sut = internalMakeUserStatisticsService( 45 new Kysely({ dialect: makeMockPgDialect(pgWriteMock) }), 46 new Kysely({ dialect: makeMockPgDialect(pgReadMock) }), 47 warehouseKysely, 48 fetchUserActionStatisticsMock, 49 fetchUserSubmissionStatisticsMock, 50 ); 51 52 await sut.refreshUserScoresCache(async () => []); 53 54 expect(pgWriteMock).not.toHaveBeenCalled(); 55 expect(warehouseMock).not.toHaveBeenCalled(); 56 expect(fetchUserActionStatisticsMock).not.toHaveBeenCalled(); 57 expect(fetchUserSubmissionStatisticsMock).not.toHaveBeenCalled(); 58 }); 59 }); 60});