mirror of
https://github.com/Abdulazizzn/n8n-enterprise-unlocked.git
synced 2025-12-18 02:21:13 +00:00
114 lines
3.0 KiB
TypeScript
114 lines
3.0 KiB
TypeScript
import type { IExecuteFunctions } from 'n8n-workflow';
|
|
|
|
import { execute } from '../../../v2/actions/sheet/remove.operation';
|
|
import type { GoogleSheet } from '../../../v2/helpers/GoogleSheet';
|
|
import { apiRequest } from '../../../v2/transport';
|
|
|
|
jest.mock('../../../v2/transport', () => ({
|
|
apiRequest: jest.fn(),
|
|
}));
|
|
|
|
describe('Google Sheet - Remove', () => {
|
|
beforeEach(() => {
|
|
jest.clearAllMocks();
|
|
});
|
|
const mockExecuteFunctions = {
|
|
getInputData: jest.fn(),
|
|
getNodeParameter: jest.fn(),
|
|
helpers: {
|
|
constructExecutionMetaData: jest.fn(),
|
|
},
|
|
} as unknown as Partial<IExecuteFunctions>;
|
|
|
|
const sheet = {} as Partial<GoogleSheet>;
|
|
const sheetName = 'spreadsheet123||sheet456';
|
|
|
|
test('should process a single item', async () => {
|
|
const items = [{ json: {} }];
|
|
((mockExecuteFunctions as IExecuteFunctions).getInputData as jest.Mock).mockReturnValue(items);
|
|
|
|
const apiResponse = { replies: [{ some: 'data' }], foo: 'bar' };
|
|
(apiRequest as jest.Mock).mockResolvedValue(apiResponse);
|
|
|
|
const constructedData = [{ json: { foo: 'bar', index: 0 } }];
|
|
(
|
|
(mockExecuteFunctions as IExecuteFunctions).helpers.constructExecutionMetaData as jest.Mock
|
|
).mockReturnValue(constructedData);
|
|
|
|
const result = await execute.call(
|
|
mockExecuteFunctions as IExecuteFunctions,
|
|
sheet as GoogleSheet,
|
|
sheetName,
|
|
);
|
|
|
|
expect(apiRequest).toHaveBeenCalledTimes(1);
|
|
expect(apiRequest).toHaveBeenCalledWith('POST', '/v4/spreadsheets/spreadsheet123:batchUpdate', {
|
|
requests: [
|
|
{
|
|
deleteSheet: {
|
|
sheetId: 'sheet456',
|
|
},
|
|
},
|
|
],
|
|
});
|
|
|
|
expect(result).toEqual(constructedData);
|
|
});
|
|
|
|
test('should process multiple items', async () => {
|
|
const items = [{ json: {} }, { json: {} }];
|
|
((mockExecuteFunctions as IExecuteFunctions).getInputData as jest.Mock).mockReturnValue(items);
|
|
|
|
const apiResponses = [
|
|
{ replies: [{ some: 'data1' }], foo: 'bar1' },
|
|
{ replies: [{ some: 'data2' }], foo: 'bar2' },
|
|
];
|
|
(apiRequest as jest.Mock)
|
|
.mockResolvedValueOnce(apiResponses[0])
|
|
.mockResolvedValueOnce(apiResponses[1]);
|
|
|
|
const constructedDataItem0 = [{ json: { foo: 'bar1', index: 0 } }];
|
|
const constructedDataItem1 = [{ json: { foo: 'bar2', index: 1 } }];
|
|
((mockExecuteFunctions as IExecuteFunctions).helpers.constructExecutionMetaData as jest.Mock)
|
|
.mockReturnValueOnce(constructedDataItem0)
|
|
.mockReturnValueOnce(constructedDataItem1);
|
|
|
|
const result = await execute.call(
|
|
mockExecuteFunctions as IExecuteFunctions,
|
|
sheet as GoogleSheet,
|
|
sheetName,
|
|
);
|
|
|
|
expect(apiRequest).toHaveBeenCalledTimes(2);
|
|
expect(apiRequest).toHaveBeenNthCalledWith(
|
|
1,
|
|
'POST',
|
|
'/v4/spreadsheets/spreadsheet123:batchUpdate',
|
|
{
|
|
requests: [
|
|
{
|
|
deleteSheet: {
|
|
sheetId: 'sheet456',
|
|
},
|
|
},
|
|
],
|
|
},
|
|
);
|
|
expect(apiRequest).toHaveBeenNthCalledWith(
|
|
2,
|
|
'POST',
|
|
'/v4/spreadsheets/spreadsheet123:batchUpdate',
|
|
{
|
|
requests: [
|
|
{
|
|
deleteSheet: {
|
|
sheetId: 'sheet456',
|
|
},
|
|
},
|
|
],
|
|
},
|
|
);
|
|
expect(result).toEqual([...constructedDataItem0, ...constructedDataItem1]);
|
|
});
|
|
});
|