mirror of
https://github.com/n8n-io/n8n.git
synced 2024-11-15 09:04:07 -08:00
116 lines
4.7 KiB
TypeScript
116 lines
4.7 KiB
TypeScript
import type {
|
|
IExecuteFunctions,
|
|
IHookFunctions,
|
|
ILoadOptionsFunctions,
|
|
IDataObject,
|
|
IHttpRequestMethods,
|
|
} from 'n8n-workflow';
|
|
import { lemlistApiRequest, lemlistApiRequestAllItems, getEvents } from '../GenericFunctions';
|
|
|
|
describe('GenericFunctions', () => {
|
|
describe('lemlistApiRequest', () => {
|
|
const mockThis = {
|
|
helpers: {
|
|
requestWithAuthentication: jest.fn(),
|
|
},
|
|
} as unknown as IHookFunctions | IExecuteFunctions | ILoadOptionsFunctions;
|
|
|
|
it('should make an authenticated API request to Lemlist', async () => {
|
|
const method: IHttpRequestMethods = 'GET';
|
|
const endpoint = '/test-endpoint';
|
|
const body: IDataObject = { key: 'value' };
|
|
const qs: IDataObject = { query: 'value' };
|
|
const option: IDataObject = { headers: {} };
|
|
|
|
await lemlistApiRequest.call(mockThis, method, endpoint, body, qs, option);
|
|
|
|
expect(mockThis.helpers.requestWithAuthentication).toHaveBeenCalledWith('lemlistApi', {
|
|
headers: {},
|
|
method: 'GET',
|
|
uri: 'https://api.lemlist.com/api/test-endpoint',
|
|
qs: { query: 'value' },
|
|
body: { key: 'value' },
|
|
json: true,
|
|
});
|
|
});
|
|
});
|
|
|
|
describe('lemlistApiRequestAllItems', () => {
|
|
const mockThis = {
|
|
helpers: {
|
|
requestWithAuthentication: jest
|
|
.fn()
|
|
.mockResolvedValue([{ id: 'cam_A1B2C3D4E5F6G7H8I9' }, { id: 'cam_A1B2C3D4E5F6G7H8I8' }]),
|
|
},
|
|
} as unknown as IHookFunctions | IExecuteFunctions | ILoadOptionsFunctions;
|
|
|
|
it('should return all results', async () => {
|
|
const method: IHttpRequestMethods = 'GET';
|
|
const endpoint = '/test-endpoint';
|
|
const qs: IDataObject = {};
|
|
qs.version = 'v2';
|
|
|
|
const result = await lemlistApiRequestAllItems.call(mockThis, method, endpoint, qs);
|
|
|
|
expect(result).toEqual([{ id: 'cam_A1B2C3D4E5F6G7H8I9' }, { id: 'cam_A1B2C3D4E5F6G7H8I8' }]);
|
|
});
|
|
});
|
|
|
|
describe('getEvents', () => {
|
|
it('should return a list of events with capitalized names', () => {
|
|
const expectedEvents = [
|
|
{ name: '*', value: '*' },
|
|
{ name: 'Contacted', value: 'contacted' },
|
|
{ name: 'Hooked', value: 'hooked' },
|
|
{ name: 'Attracted', value: 'attracted' },
|
|
{ name: 'Warmed', value: 'warmed' },
|
|
{ name: 'Interested', value: 'interested' },
|
|
{ name: 'Skipped', value: 'skipped' },
|
|
{ name: 'Not Interested', value: 'notInterested' },
|
|
{ name: 'Emails Sent', value: 'emailsSent' },
|
|
{ name: 'Emails Opened', value: 'emailsOpened' },
|
|
{ name: 'Emails Clicked', value: 'emailsClicked' },
|
|
{ name: 'Emails Replied', value: 'emailsReplied' },
|
|
{ name: 'Emails Bounced', value: 'emailsBounced' },
|
|
{ name: 'Emails Send Failed', value: 'emailsSendFailed' },
|
|
{ name: 'Emails Failed', value: 'emailsFailed' },
|
|
{ name: 'Emails Unsubscribed', value: 'emailsUnsubscribed' },
|
|
{ name: 'Emails Interested', value: 'emailsInterested' },
|
|
{ name: 'Emails Not Interested', value: 'emailsNotInterested' },
|
|
{ name: 'Opportunities Done', value: 'opportunitiesDone' },
|
|
{ name: 'Aircall Created', value: 'aircallCreated' },
|
|
{ name: 'Aircall Ended', value: 'aircallEnded' },
|
|
{ name: 'Aircall Done', value: 'aircallDone' },
|
|
{ name: 'Aircall Interested', value: 'aircallInterested' },
|
|
{ name: 'Aircall Not Interested', value: 'aircallNotInterested' },
|
|
{ name: 'Api Done', value: 'apiDone' },
|
|
{ name: 'Api Interested', value: 'apiInterested' },
|
|
{ name: 'Api Not Interested', value: 'apiNotInterested' },
|
|
{ name: 'Api Failed', value: 'apiFailed' },
|
|
{ name: 'LinkedIn Visit Done', value: 'linkedinVisitDone' },
|
|
{ name: 'LinkedIn Visit Failed', value: 'linkedinVisitFailed' },
|
|
{ name: 'LinkedIn Invite Done', value: 'linkedinInviteDone' },
|
|
{ name: 'LinkedIn Invite Failed', value: 'linkedinInviteFailed' },
|
|
{ name: 'LinkedIn Invite Accepted', value: 'linkedinInviteAccepted' },
|
|
{ name: 'LinkedIn Replied', value: 'linkedinReplied' },
|
|
{ name: 'LinkedIn Sent', value: 'linkedinSent' },
|
|
{ name: 'LinkedIn Voice Note Done', value: 'linkedinVoiceNoteDone' },
|
|
{ name: 'LinkedIn Voice Note Failed', value: 'linkedinVoiceNoteFailed' },
|
|
{ name: 'LinkedIn Interested', value: 'linkedinInterested' },
|
|
{ name: 'LinkedIn Not Interested', value: 'linkedinNotInterested' },
|
|
{ name: 'LinkedIn Send Failed', value: 'linkedinSendFailed' },
|
|
{ name: 'Manual Interested', value: 'manualInterested' },
|
|
{ name: 'Manual Not Interested', value: 'manualNotInterested' },
|
|
{ name: 'Paused', value: 'paused' },
|
|
{ name: 'Resumed', value: 'resumed' },
|
|
{ name: 'Custom Domain Errors', value: 'customDomainErrors' },
|
|
{ name: 'Connection Issue', value: 'connectionIssue' },
|
|
{ name: 'Send Limit Reached', value: 'sendLimitReached' },
|
|
{ name: 'Lemwarm Paused', value: 'lemwarmPaused' },
|
|
];
|
|
const result = getEvents();
|
|
expect(result).toEqual(expectedEvents);
|
|
});
|
|
});
|
|
});
|