Files
n8n-enterprise-unlocked/packages/frontend/editor-ui/src/components/NDVHeader.test.ts
2025-07-04 17:14:17 +02:00

57 lines
1.7 KiB
TypeScript

import { userEvent } from '@testing-library/user-event';
import NDVHeader from '@/components/NDVHeader.vue';
import { renderComponent } from '../__tests__/render';
describe('NDVHeader', () => {
const defaultProps = {
nodeName: 'My Custom Name',
nodeTypeName: 'Edit Fields',
docsUrl: 'https://example.com/docs',
icon: { icon: 'code' },
readOnly: false,
};
it('renders docs label with node type name if name is customized', () => {
const { getByText } = renderComponent(NDVHeader, { props: defaultProps });
expect(getByText('Edit Fields Docs')).toBeInTheDocument();
});
it('renders nodeTypeName if docsUrl is not provided and name is custom', () => {
const { getByText, queryByText } = renderComponent(NDVHeader, {
props: {
...defaultProps,
docsUrl: undefined,
},
});
expect(getByText('Edit Fields')).toBeInTheDocument();
expect(queryByText('Docs')).not.toBeInTheDocument();
});
it('emits rename when inline text is changed', async () => {
const { getByTestId, emitted } = renderComponent(NDVHeader, {
props: defaultProps,
});
const input = getByTestId('inline-edit-input');
const preview = getByTestId('inline-edit-preview');
await userEvent.click(preview);
await userEvent.tripleClick(input);
await userEvent.keyboard('Updated Name');
await userEvent.keyboard('{enter}');
expect(emitted().rename).toHaveLength(1);
expect(emitted().rename[0]).toEqual(['Updated Name']);
});
it('emits close when close button is clicked', async () => {
const { getByRole, emitted } = renderComponent(NDVHeader, {
props: defaultProps,
});
const closeButton = getByRole('button');
await userEvent.click(closeButton);
expect(emitted().close).toBeTruthy();
});
});