mirror of
https://github.com/n8n-io/n8n.git
synced 2026-08-29 01:39:24 +08:00
81 lines
3.1 KiB
TypeScript
81 lines
3.1 KiB
TypeScript
import type { SectionCreateElement } from '@/Interface';
|
|
import { formatTriggerActionName, groupItemsInSections, sortNodeCreateElements } from './utils';
|
|
import {
|
|
mockActionCreateElement,
|
|
mockNodeCreateElement,
|
|
mockSectionCreateElement,
|
|
} from './__tests__/utils';
|
|
|
|
describe('NodeCreator - utils', () => {
|
|
describe('groupItemsInSections', () => {
|
|
it('should handle multiple sections (with "other" section)', () => {
|
|
const node1 = mockNodeCreateElement({ key: 'popularNode' });
|
|
const node2 = mockNodeCreateElement({ key: 'newNode' });
|
|
const node3 = mockNodeCreateElement({ key: 'otherNode' });
|
|
const result = groupItemsInSections(
|
|
[node1, node2, node3],
|
|
[
|
|
{ key: 'popular', title: 'Popular', items: [node1.key] },
|
|
{ key: 'new', title: 'New', items: [node2.key] },
|
|
],
|
|
) as SectionCreateElement[];
|
|
expect(result.length).toEqual(3);
|
|
expect(result[0].title).toEqual('Popular');
|
|
expect(result[0].children).toEqual([node1]);
|
|
expect(result[1].title).toEqual('New');
|
|
expect(result[1].children).toEqual([node2]);
|
|
expect(result[2].title).toEqual('Other');
|
|
expect(result[2].children).toEqual([node3]);
|
|
});
|
|
|
|
it('should handle no sections', () => {
|
|
const node1 = mockNodeCreateElement({ key: 'popularNode' });
|
|
const node2 = mockNodeCreateElement({ key: 'newNode' });
|
|
const node3 = mockNodeCreateElement({ key: 'otherNode' });
|
|
const result = groupItemsInSections([node1, node2, node3], []);
|
|
expect(result).toEqual([node1, node2, node3]);
|
|
});
|
|
|
|
it('should handle only empty sections', () => {
|
|
const node1 = mockNodeCreateElement({ key: 'popularNode' });
|
|
const node2 = mockNodeCreateElement({ key: 'newNode' });
|
|
const node3 = mockNodeCreateElement({ key: 'otherNode' });
|
|
const result = groupItemsInSections(
|
|
[node1, node2, node3],
|
|
[
|
|
{ key: 'popular', title: 'Popular', items: [] },
|
|
{ key: 'new', title: 'New', items: ['someOtherNodeType'] },
|
|
],
|
|
);
|
|
expect(result).toEqual([node1, node2, node3]);
|
|
});
|
|
});
|
|
|
|
describe('sortNodeCreateElements', () => {
|
|
it('should sort nodes alphabetically by displayName', () => {
|
|
const node1 = mockNodeCreateElement({ key: 'newNode' }, { displayName: 'xyz' });
|
|
const node2 = mockNodeCreateElement({ key: 'popularNode' }, { displayName: 'abc' });
|
|
const node3 = mockNodeCreateElement({ key: 'otherNode' }, { displayName: 'ABC' });
|
|
expect(sortNodeCreateElements([node1, node2, node3])).toEqual([node2, node3, node1]);
|
|
});
|
|
|
|
it('should not change order for other types (sections, actions)', () => {
|
|
const node1 = mockSectionCreateElement();
|
|
const node2 = mockActionCreateElement();
|
|
const node3 = mockSectionCreateElement();
|
|
expect(sortNodeCreateElements([node1, node2, node3])).toEqual([node1, node2, node3]);
|
|
});
|
|
});
|
|
|
|
describe('formatTriggerActionName', () => {
|
|
test.each([
|
|
['project.created', 'project created'],
|
|
['Project Created', 'project created'],
|
|
['field.value.created', 'field value created'],
|
|
['attendee.checked_in', 'attendee checked in'],
|
|
])('Action name %i should become as %i', (actionName, expected) => {
|
|
expect(formatTriggerActionName(actionName)).toEqual(expected);
|
|
});
|
|
});
|
|
});
|