mirror of
https://github.com/n8n-io/n8n.git
synced 2024-11-15 09:04:07 -08:00
110 lines
3.1 KiB
TypeScript
110 lines
3.1 KiB
TypeScript
|
/* eslint-disable n8n-nodes-base/node-filename-against-convention */
|
||
|
import { N8nTrigger } from '../N8nTrigger.node';
|
||
|
|
||
|
describe('N8nTrigger', () => {
|
||
|
let n8nTrigger: N8nTrigger;
|
||
|
let mockTriggerFunctions: any;
|
||
|
|
||
|
beforeEach(() => {
|
||
|
n8nTrigger = new N8nTrigger();
|
||
|
|
||
|
// Mock trigger functions
|
||
|
mockTriggerFunctions = {
|
||
|
emit: jest.fn(),
|
||
|
getNodeParameter: jest.fn(),
|
||
|
getActivationMode: jest.fn(),
|
||
|
getWorkflow: jest.fn(() => ({ id: 'test-workflow-id' })),
|
||
|
helpers: {
|
||
|
returnJsonArray: jest.fn((data) => data),
|
||
|
},
|
||
|
};
|
||
|
});
|
||
|
|
||
|
describe('trigger', () => {
|
||
|
it('should emit event when activation mode matches selected events', async () => {
|
||
|
mockTriggerFunctions.getNodeParameter.mockReturnValue(['activate']);
|
||
|
mockTriggerFunctions.getActivationMode.mockReturnValue('activate');
|
||
|
|
||
|
await n8nTrigger.trigger.call(mockTriggerFunctions);
|
||
|
|
||
|
expect(mockTriggerFunctions.emit).toHaveBeenCalledWith([
|
||
|
[
|
||
|
{
|
||
|
event: 'Workflow activated',
|
||
|
timestamp: expect.any(String),
|
||
|
workflow_id: 'test-workflow-id',
|
||
|
},
|
||
|
],
|
||
|
]);
|
||
|
});
|
||
|
|
||
|
it('should not emit event when activation mode does not match selected events', async () => {
|
||
|
mockTriggerFunctions.getNodeParameter.mockReturnValue(['update']);
|
||
|
mockTriggerFunctions.getActivationMode.mockReturnValue('activate');
|
||
|
|
||
|
await n8nTrigger.trigger.call(mockTriggerFunctions);
|
||
|
|
||
|
expect(mockTriggerFunctions.emit).not.toHaveBeenCalled();
|
||
|
});
|
||
|
|
||
|
it('should return manual trigger function', async () => {
|
||
|
const result = await n8nTrigger.trigger.call(mockTriggerFunctions);
|
||
|
|
||
|
expect(result).toHaveProperty('manualTriggerFunction');
|
||
|
expect(typeof result.manualTriggerFunction).toBe('function');
|
||
|
});
|
||
|
|
||
|
it('should emit correct event for instance started', async () => {
|
||
|
mockTriggerFunctions.getNodeParameter.mockReturnValue(['init']);
|
||
|
mockTriggerFunctions.getActivationMode.mockReturnValue('init');
|
||
|
|
||
|
await n8nTrigger.trigger.call(mockTriggerFunctions);
|
||
|
|
||
|
expect(mockTriggerFunctions.emit).toHaveBeenCalledWith([
|
||
|
[
|
||
|
{
|
||
|
event: 'Instance started',
|
||
|
timestamp: expect.any(String),
|
||
|
workflow_id: 'test-workflow-id',
|
||
|
},
|
||
|
],
|
||
|
]);
|
||
|
});
|
||
|
|
||
|
it('should emit correct event for workflow updated', async () => {
|
||
|
mockTriggerFunctions.getNodeParameter.mockReturnValue(['update']);
|
||
|
mockTriggerFunctions.getActivationMode.mockReturnValue('update');
|
||
|
|
||
|
await n8nTrigger.trigger.call(mockTriggerFunctions);
|
||
|
|
||
|
expect(mockTriggerFunctions.emit).toHaveBeenCalledWith([
|
||
|
[
|
||
|
{
|
||
|
event: 'Workflow updated',
|
||
|
timestamp: expect.any(String),
|
||
|
workflow_id: 'test-workflow-id',
|
||
|
},
|
||
|
],
|
||
|
]);
|
||
|
});
|
||
|
});
|
||
|
|
||
|
describe('description', () => {
|
||
|
it('should have correct properties', () => {
|
||
|
expect(n8nTrigger.description).toMatchObject({
|
||
|
displayName: 'n8n Trigger',
|
||
|
name: 'n8nTrigger',
|
||
|
group: ['trigger'],
|
||
|
version: 1,
|
||
|
});
|
||
|
});
|
||
|
|
||
|
it('should have required properties configuration', () => {
|
||
|
const eventsProperty = n8nTrigger.description.properties.find((p) => p.name === 'events');
|
||
|
expect(eventsProperty).toBeDefined();
|
||
|
expect(eventsProperty?.required).toBe(true);
|
||
|
expect(eventsProperty?.type).toBe('multiOptions');
|
||
|
});
|
||
|
});
|
||
|
});
|