Files
n8n-enterprise-unlocked/packages/nodes-base/nodes/Code/test/ExecutionError.test.ts
2025-06-27 12:18:26 +03:00

65 lines
2.6 KiB
TypeScript

import { ExecutionError } from '../ExecutionError';
describe('ExecutionError', () => {
describe('constructor', () => {
it('should set message to "Unknown error" when stack is empty', () => {
const error = new Error('test');
error.stack = '';
const executionError = new ExecutionError(error);
expect(executionError.message).toBe('Unknown error');
});
it('should extract error details and type from stack', () => {
const error = new Error('ErrorType: Error Details');
error.stack = 'Error: ErrorType: Error Details\n at Code:123';
const executionError = new ExecutionError(error);
expect(executionError.message).toBe('Error Details [line 123]');
expect(executionError.description).toBe('ErrorType');
});
it('should extract error details when no error type is present', () => {
const error = new Error('Error Details');
error.stack = 'Error: Error Details\n at Code:123';
const executionError = new ExecutionError(error);
expect(executionError.message).toBe('Error Details [line 123]');
expect(executionError.description).toBe(null);
});
it('should handle stack with only "Error: " prefix', () => {
const error = new Error('Error: ');
error.stack = 'Error: Error: \n at Code:123';
const executionError = new ExecutionError(error);
expect(executionError.message).toBe('Unknown error [line 123]');
expect(executionError.description).toBe(null);
});
it('should handle stack with colon and space', () => {
const error = new Error(': ');
error.stack = 'Error: : \n at Code:123';
const executionError = new ExecutionError(error);
expect(executionError.message).toBe('Unknown error [line 123]');
expect(executionError.description).toBe(null);
});
it('should handle itemIndex', () => {
const error = new Error('ErrorType: Error Details');
error.stack = 'Error: ErrorType: Error Details\n at Code:123';
const executionError = new ExecutionError(error, 1);
expect(executionError.message).toBe('Error Details [line 123, for item 1]');
expect(executionError.description).toBe('ErrorType');
expect(executionError.itemIndex).toBe(1);
expect(executionError.context).toEqual({ itemIndex: 1 });
});
it('should handle stack without line number', () => {
const error = new Error('ErrorType: Error Details');
error.stack = 'Error: ErrorType: Error Details';
const executionError = new ExecutionError(error, 1);
expect(executionError.message).toBe('Error Details');
expect(executionError.description).toBe('ErrorType');
expect(executionError.itemIndex).toBe(1);
expect(executionError.context).toEqual({ itemIndex: 1 });
});
});
});