mirror of
https://github.com/Abdulazizzn/n8n-enterprise-unlocked.git
synced 2025-12-18 02:21:13 +00:00
feat(n8n Evaluation Trigger Node): Add Evaluation Trigger and Evaluation Node (#15194)
This commit is contained in:
@@ -0,0 +1,101 @@
|
||||
import type { IExecuteFunctions, INodeExecutionData } from 'n8n-workflow';
|
||||
|
||||
import { readSheet } from '../../Google/Sheet/v2/actions/utils/readOperation';
|
||||
import { GoogleSheet } from '../../Google/Sheet/v2/helpers/GoogleSheet';
|
||||
import { getFilteredResults } from '../utils/evaluationTriggerUtils';
|
||||
|
||||
jest.mock('../../Google/Sheet/v2/actions/utils/readOperation', () => ({
|
||||
readSheet: jest.fn(),
|
||||
}));
|
||||
|
||||
describe('getFilteredResults', () => {
|
||||
let mockThis: IExecuteFunctions;
|
||||
let mockGoogleSheet: GoogleSheet;
|
||||
|
||||
beforeEach(() => {
|
||||
// Mock the `this` context
|
||||
mockThis = {
|
||||
getNode: jest.fn().mockReturnValue({ typeVersion: 1 }),
|
||||
} as unknown as IExecuteFunctions;
|
||||
|
||||
// Mock the GoogleSheet instance
|
||||
mockGoogleSheet = new GoogleSheet('mockSpreadsheetId', mockThis);
|
||||
|
||||
// Reset mocks before each test
|
||||
jest.clearAllMocks();
|
||||
});
|
||||
|
||||
it('should return filtered results based on endingRow', async () => {
|
||||
// Arrange
|
||||
const mockOperationResult: INodeExecutionData[] = [];
|
||||
const mockResult = { title: 'Sheet1', sheetId: 1 };
|
||||
const startingRow = 1;
|
||||
const endingRow = 3;
|
||||
|
||||
(readSheet as jest.Mock).mockResolvedValue([
|
||||
{ json: { row_number: 1, data: 'Row 1' } },
|
||||
{ json: { row_number: 2, data: 'Row 2' } },
|
||||
{ json: { row_number: 3, data: 'Row 3' } },
|
||||
{ json: { row_number: 4, data: 'Row 4' } },
|
||||
]);
|
||||
|
||||
// Act
|
||||
const result = await getFilteredResults.call(
|
||||
mockThis,
|
||||
mockOperationResult,
|
||||
mockGoogleSheet,
|
||||
mockResult,
|
||||
startingRow,
|
||||
endingRow,
|
||||
);
|
||||
|
||||
// Assert
|
||||
expect(readSheet).toHaveBeenCalledWith(
|
||||
mockGoogleSheet,
|
||||
'Sheet1',
|
||||
0,
|
||||
mockOperationResult,
|
||||
1,
|
||||
[],
|
||||
undefined,
|
||||
{
|
||||
rangeDefinition: 'specifyRange',
|
||||
headerRow: 1,
|
||||
firstDataRow: startingRow,
|
||||
},
|
||||
);
|
||||
|
||||
expect(result).toEqual([
|
||||
{ json: { row_number: 1, data: 'Row 1' } },
|
||||
{ json: { row_number: 2, data: 'Row 2' } },
|
||||
{ json: { row_number: 3, data: 'Row 3' } },
|
||||
]);
|
||||
});
|
||||
|
||||
it('should return an empty array if no rows match the filter', async () => {
|
||||
// Arrange
|
||||
const mockOperationResult: INodeExecutionData[] = [];
|
||||
const mockResult = { title: 'Sheet1', sheetId: 1 };
|
||||
const startingRow = 1;
|
||||
const endingRow = 0;
|
||||
|
||||
(readSheet as jest.Mock).mockResolvedValue([
|
||||
{ json: { row_number: 1, data: 'Row 1' } },
|
||||
{ json: { row_number: 2, data: 'Row 2' } },
|
||||
]);
|
||||
|
||||
// Act
|
||||
const result = await getFilteredResults.call(
|
||||
mockThis,
|
||||
mockOperationResult,
|
||||
mockGoogleSheet,
|
||||
mockResult,
|
||||
startingRow,
|
||||
endingRow,
|
||||
);
|
||||
|
||||
// Assert
|
||||
expect(readSheet).toHaveBeenCalled();
|
||||
expect(result).toEqual([]);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user