mirror of
https://github.com/CompassConnections/Compass.git
synced 2026-02-05 11:30:57 -05:00
98 lines
3.7 KiB
TypeScript
98 lines
3.7 KiB
TypeScript
jest.mock('shared/supabase/init');
|
|
jest.mock('shared/utils');
|
|
jest.mock('shared/supabase/utils');
|
|
jest.mock('common/util/try-catch');
|
|
|
|
import { createVote } from "api/create-vote";
|
|
import * as supabaseInit from "shared/supabase/init";
|
|
import * as sharedUtils from "shared/utils";
|
|
import * as supabaseUtils from "shared/supabase/utils";
|
|
import { tryCatch } from "common/util/try-catch";
|
|
import { AuthedUser } from "api/helpers/endpoint";
|
|
|
|
describe('createVote', () => {
|
|
beforeEach(() => {
|
|
jest.resetAllMocks();
|
|
const mockPg = {} as any;
|
|
(supabaseInit.createSupabaseDirectClient as jest.Mock)
|
|
.mockReturnValue(mockPg)
|
|
});
|
|
afterEach(() => {
|
|
jest.restoreAllMocks();
|
|
});
|
|
|
|
describe('when given valid input', () => {
|
|
it('should successfully creates a vote', async () => {
|
|
const mockProps = {
|
|
title: 'mockTitle',
|
|
description: {'mockDescription': 'mockDescriptionValue'},
|
|
isAnonymous: true
|
|
};
|
|
const mockCreator = {id: '123'};
|
|
const mockAuth = { uid: '321' } as AuthedUser;
|
|
const mockReq = {} as any;
|
|
const mockData = {
|
|
creator_id: mockCreator.id,
|
|
title: 'mockTitle',
|
|
description: {'mockDescription': 'mockDescriptionValue'},
|
|
is_anonymous: true,
|
|
status: 'voting_open'
|
|
};
|
|
|
|
(sharedUtils.getUser as jest.Mock).mockResolvedValue(mockCreator);
|
|
(tryCatch as jest.Mock).mockResolvedValue({data: mockData , error: null});
|
|
|
|
const result = await createVote(mockProps, mockAuth, mockReq);
|
|
expect(result.data).toEqual(mockData);
|
|
expect(sharedUtils.getUser).toBeCalledTimes(1);
|
|
expect(sharedUtils.getUser).toBeCalledWith(mockAuth.uid);
|
|
expect(supabaseUtils.insert).toBeCalledTimes(1);
|
|
expect(supabaseUtils.insert).toHaveBeenCalledWith(
|
|
expect.any(Object),
|
|
'votes',
|
|
{
|
|
creator_id: mockCreator.id,
|
|
title: mockProps.title,
|
|
description: mockProps.description,
|
|
is_anonymous: mockProps.isAnonymous,
|
|
status: 'voting_open'
|
|
}
|
|
);
|
|
});
|
|
});
|
|
describe('when an error occurs', () => {
|
|
it('should throw if the account was not found', async () => {
|
|
const mockProps = {
|
|
title: 'mockTitle',
|
|
description: {'mockDescription': 'mockDescriptionValue'},
|
|
isAnonymous: true
|
|
};
|
|
const mockAuth = { uid: '321' } as AuthedUser;
|
|
const mockReq = {} as any;
|
|
|
|
(sharedUtils.getUser as jest.Mock).mockResolvedValue(null);
|
|
|
|
expect(createVote(mockProps, mockAuth, mockReq))
|
|
.rejects
|
|
.toThrow('Your account was not found');
|
|
});
|
|
|
|
it('should throw if unable to create a question', async () => {
|
|
const mockProps = {
|
|
title: 'mockTitle',
|
|
description: {'mockDescription': 'mockDescriptionValue'},
|
|
isAnonymous: true
|
|
};
|
|
const mockCreator = {id: '123'};
|
|
const mockAuth = { uid: '321' } as AuthedUser;
|
|
const mockReq = {} as any;
|
|
|
|
(sharedUtils.getUser as jest.Mock).mockResolvedValue(mockCreator);
|
|
(tryCatch as jest.Mock).mockResolvedValue({data: null , error: Error});
|
|
|
|
expect(createVote(mockProps, mockAuth, mockReq))
|
|
.rejects
|
|
.toThrow('Error creating question');
|
|
});
|
|
});
|
|
}); |