From 06723c279a79ff7dc6790ffd2986c676eb2954c0 Mon Sep 17 00:00:00 2001 From: Dana Lee Date: Fri, 31 Jan 2025 15:48:15 +0100 Subject: [PATCH] Add tests --- .../nodes/Form/test/Form.node.test.ts | 111 ++++++++++++------ 1 file changed, 75 insertions(+), 36 deletions(-) diff --git a/packages/nodes-base/nodes/Form/test/Form.node.test.ts b/packages/nodes-base/nodes/Form/test/Form.node.test.ts index 537804dea3a3f..5065df20c9c83 100644 --- a/packages/nodes-base/nodes/Form/test/Form.node.test.ts +++ b/packages/nodes-base/nodes/Form/test/Form.node.test.ts @@ -217,47 +217,86 @@ describe('Form Node', () => { }); it('should handle completion operation and render completion page', async () => { - mockWebhookFunctions.getRequestObject.mockReturnValue({ method: 'GET' } as Request); - mockWebhookFunctions.getNodeParameter.mockImplementation((paramName) => { - if (paramName === 'operation') return 'completion'; - if (paramName === 'useJson') return false; - if (paramName === 'jsonOutput') return '[]'; - if (paramName === 'respondWith') return 'text'; - if (paramName === 'completionTitle') return 'Test Title'; - if (paramName === 'completionMessage') return 'Test Message'; - if (paramName === 'redirectUrl') return ''; - if (paramName === 'formFields.values') return []; - return {}; - }); - mockWebhookFunctions.getParentNodes.mockReturnValue([ + const formExpected = [ { - type: 'n8n-nodes-base.formTrigger', - name: 'Form Trigger', - typeVersion: 2.1, - disabled: false, + formParam: { + responseText: '', + }, + expected: { + appendAttribution: 'test', + formTitle: 'test', + message: 'Test Message', + title: 'Test Title', + responseText: '', + }, }, - ]); - mockWebhookFunctions.evaluateExpression.mockReturnValue('test'); + { + formParam: { + responseText: '
hey
', + }, + expected: { + appendAttribution: 'test', + formTitle: 'test', + message: 'Test Message', + title: 'Test Title', + responseText: '
hey
', + }, + }, + { + formParam: { + responseText: 'my text over here', + }, + expected: { + appendAttribution: 'test', + formTitle: 'test', + message: 'Test Message', + title: 'Test Title', + responseText: 'my text over here', + }, + }, + ]; - const mockResponseObject = { - render: jest.fn(), - redirect: jest.fn(), - }; - mockWebhookFunctions.getResponseObject.mockReturnValue( - mockResponseObject as unknown as Response, - ); - mockWebhookFunctions.getNode.mockReturnValue(mock({ name: formCompletionNodeName })); - mockWebhookFunctions.getExecutionId.mockReturnValue(testExecutionId); + for (const { formParam, expected } of formExpected) { + mockWebhookFunctions.getRequestObject.mockReturnValue({ method: 'GET' } as Request); + mockWebhookFunctions.getNodeParameter.mockImplementation((paramName) => { + if (paramName === 'operation') return 'completion'; + if (paramName === 'useJson') return false; + if (paramName === 'jsonOutput') return '[]'; + if (paramName === 'respondWith') return 'text'; + if (paramName === 'completionTitle') return 'Test Title'; + if (paramName === 'completionMessage') return 'Test Message'; + if (paramName === 'redirectUrl') return ''; + if (paramName === 'formFields.values') return []; + if (paramName === 'responseText') return formParam.responseText; + return {}; + }); + mockWebhookFunctions.getParentNodes.mockReturnValue([ + { + type: 'n8n-nodes-base.formTrigger', + name: 'Form Trigger', + typeVersion: 2.1, + disabled: false, + }, + ]); + mockWebhookFunctions.evaluateExpression.mockReturnValue('test'); - const result = await form.webhook(mockWebhookFunctions); + const mockResponseObject = { + render: jest.fn(), + redirect: jest.fn(), + }; + mockWebhookFunctions.getResponseObject.mockReturnValue( + mockResponseObject as unknown as Response, + ); + mockWebhookFunctions.getNode.mockReturnValue(mock({ name: formCompletionNodeName })); + mockWebhookFunctions.getExecutionId.mockReturnValue(testExecutionId); - expect(result).toEqual({ noWebhookResponse: true }); - expect(mockResponseObject.render).toHaveBeenCalledWith('form-trigger-completion', { - appendAttribution: 'test', - formTitle: 'test', - message: 'Test Message', - title: 'Test Title', - }); + const result = await form.webhook(mockWebhookFunctions); + + expect(result).toEqual({ noWebhookResponse: true }); + expect(mockResponseObject.render).toHaveBeenCalledWith('form-trigger-completion', { + ...expected, + }); + } }); it('should handle completion operation and redirect', async () => {