jest.mock('shared/supabase/init'); import {getCompatibleProfiles} from "api/compatible-profiles"; import * as supabaseInit from "shared/supabase/init"; describe('getCompatibleProfiles', () => { let mockPg = {} as any; beforeEach(() => { jest.resetAllMocks(); mockPg = { map: jest.fn().mockResolvedValue([]), }; (supabaseInit.createSupabaseDirectClient as jest.Mock) .mockReturnValue(mockPg); }); afterEach(() => { jest.restoreAllMocks(); }); describe('when given valid input', () => { it('should successfully get compatible profiles', async () => { const mockProps = '123'; const mockScores = ["abc", { score: 0.69 }]; const mockScoresFromEntries = {"abc": { score: 0.69 }}; (mockPg.map as jest.Mock).mockResolvedValue([mockScores]); const results = await getCompatibleProfiles(mockProps); const [sql, param, fn] = mockPg.map.mock.calls[0]; expect(results.status).toEqual('success'); expect(results.profileCompatibilityScores).toEqual(mockScoresFromEntries); expect(mockPg.map).toBeCalledTimes(1); expect(sql).toContain('select *'); expect(sql).toContain('from compatibility_scores'); expect(param).toStrictEqual([mockProps]); expect(fn).toEqual(expect.any(Function)); }); }); });