Files
Automata/packages/editor-ui/src/components/__tests__/VariablesRow.spec.ts
Alex Grozav 9c94050deb feat: Replace Vue.extend with defineComponent in editor-ui (no-changelog) (#6033)
* refactor: replace Vue.extend with defineComponent in editor-ui

* fix: change $externalHooks extractions from mixins

* fix: refactor externalHooks mixin
2023-04-21 18:51:08 +03:00

106 lines
2.7 KiB
TypeScript

import VariablesRow from '../VariablesRow.vue';
import { EnvironmentVariable } from '@/Interface';
import { fireEvent } from '@testing-library/vue';
import { createPinia, setActivePinia } from 'pinia';
import { setupServer } from '@/__tests__/server';
import { afterAll, beforeAll } from 'vitest';
import { useSettingsStore, useUsersStore } from '@/stores';
import { renderComponent } from '@/__tests__/utils';
describe('VariablesRow', () => {
let server: ReturnType<typeof setupServer>;
let pinia: ReturnType<typeof createPinia>;
beforeAll(() => {
server = setupServer();
});
beforeEach(async () => {
pinia = createPinia();
setActivePinia(pinia);
await useSettingsStore().getSettings();
await useUsersStore().loginWithCookie();
});
afterAll(() => {
server.shutdown();
});
const stubs = ['n8n-tooltip'];
const environmentVariable: EnvironmentVariable = {
id: 1,
key: 'key',
value: 'value',
};
it('should render correctly', () => {
const wrapper = renderComponent(VariablesRow, {
props: {
data: environmentVariable,
},
stubs,
pinia,
});
expect(wrapper.html()).toMatchSnapshot();
expect(wrapper.container.querySelectorAll('td')).toHaveLength(4);
});
it('should show edit and delete buttons on hover', async () => {
const wrapper = renderComponent(VariablesRow, {
props: {
data: environmentVariable,
},
stubs,
pinia,
});
await fireEvent.mouseEnter(wrapper.container);
expect(wrapper.getByTestId('variable-row-edit-button')).toBeVisible();
expect(wrapper.getByTestId('variable-row-delete-button')).toBeVisible();
});
it('should show key and value inputs in edit mode', async () => {
const wrapper = renderComponent(VariablesRow, {
props: {
data: environmentVariable,
editing: true,
},
stubs,
pinia,
});
await fireEvent.mouseEnter(wrapper.container);
expect(wrapper.getByTestId('variable-row-key-input')).toBeVisible();
expect(wrapper.getByTestId('variable-row-key-input').querySelector('input')).toHaveValue(
environmentVariable.key,
);
expect(wrapper.getByTestId('variable-row-value-input')).toBeVisible();
expect(wrapper.getByTestId('variable-row-value-input').querySelector('input')).toHaveValue(
environmentVariable.value,
);
expect(wrapper.html()).toMatchSnapshot();
});
it('should show cancel and save buttons in edit mode', async () => {
const wrapper = renderComponent(VariablesRow, {
props: {
data: environmentVariable,
editing: true,
},
stubs,
pinia,
});
await fireEvent.mouseEnter(wrapper.container);
expect(wrapper.getByTestId('variable-row-cancel-button')).toBeVisible();
expect(wrapper.getByTestId('variable-row-save-button')).toBeVisible();
});
});