mirror of
https://github.com/Abdulazizzn/n8n-enterprise-unlocked.git
synced 2025-12-20 11:22:15 +00:00
138 lines
3.8 KiB
TypeScript
138 lines
3.8 KiB
TypeScript
import PersonalizationModal from '@/components/PersonalizationModal.vue';
|
|
import { createTestingPinia } from '@pinia/testing';
|
|
import userEvent from '@testing-library/user-event';
|
|
import { PERSONALIZATION_MODAL_KEY, ROLE, STORES, VIEWS } from '@/constants';
|
|
import { retry } from '@/__tests__/utils';
|
|
import { createComponentRenderer } from '@/__tests__/render';
|
|
import { fireEvent } from '@testing-library/vue';
|
|
import { useUsersStore } from '@/stores/users.store';
|
|
import { useUsageStore } from '@/stores/usage.store';
|
|
|
|
const pinia = createTestingPinia({
|
|
initialState: {
|
|
[STORES.UI]: {
|
|
modals: {
|
|
[PERSONALIZATION_MODAL_KEY]: { open: true },
|
|
},
|
|
},
|
|
[STORES.SETTINGS]: {
|
|
settings: {
|
|
templates: {
|
|
host: '',
|
|
},
|
|
},
|
|
},
|
|
[STORES.USERS]: {
|
|
users: {
|
|
123: {
|
|
email: 'john@doe.com',
|
|
firstName: 'John',
|
|
lastName: 'Doe',
|
|
isDefaultUser: false,
|
|
isPendingUser: false,
|
|
hasRecoveryCodesLeft: true,
|
|
role: ROLE.Owner,
|
|
mfaEnabled: false,
|
|
},
|
|
},
|
|
currentUserId: '123',
|
|
},
|
|
},
|
|
});
|
|
|
|
const renderComponent = createComponentRenderer(PersonalizationModal, {
|
|
props: {
|
|
teleported: false,
|
|
appendToBody: false,
|
|
},
|
|
pinia,
|
|
global: {
|
|
mocks: {
|
|
$route: {
|
|
name: VIEWS.NEW_WORKFLOW,
|
|
},
|
|
},
|
|
},
|
|
});
|
|
|
|
describe('PersonalizationModal.vue', () => {
|
|
it('should render correctly', async () => {
|
|
const wrapper = renderComponent();
|
|
|
|
await retry(() =>
|
|
expect(wrapper.container.querySelector('.modal-content')).toBeInTheDocument(),
|
|
);
|
|
|
|
expect(wrapper.container.querySelectorAll('.n8n-select').length).toEqual(5);
|
|
});
|
|
|
|
it('should display new option when role is "Devops", "Engineering", "IT", or "Sales and marketing"', async () => {
|
|
const wrapper = renderComponent();
|
|
|
|
await retry(() =>
|
|
expect(wrapper.container.querySelector('.modal-content')).toBeInTheDocument(),
|
|
);
|
|
|
|
for (const index of [3, 4, 5, 6]) {
|
|
const select = wrapper.container.querySelectorAll('.n8n-select')[1]!;
|
|
|
|
await fireEvent.click(select);
|
|
|
|
const item = select.querySelectorAll('.el-select-dropdown__item')[index];
|
|
|
|
await fireEvent.click(item);
|
|
|
|
await retry(() => {
|
|
expect(wrapper.container.querySelectorAll('.n8n-select').length).toEqual(6);
|
|
expect(wrapper.container.querySelector('[name^="automationGoal"]')).toBeInTheDocument();
|
|
});
|
|
}
|
|
});
|
|
|
|
it('should display self serve trial option when company size is larger than 500', async () => {
|
|
const wrapper = renderComponent();
|
|
|
|
await retry(() =>
|
|
expect(wrapper.container.querySelector('.modal-content')).toBeInTheDocument(),
|
|
);
|
|
|
|
const select = wrapper.container.querySelectorAll('.n8n-select')[3]!;
|
|
await fireEvent.click(select);
|
|
|
|
const item = select.querySelectorAll('.el-select-dropdown__item')[3];
|
|
await fireEvent.click(item);
|
|
|
|
await retry(() => {
|
|
expect(wrapper.container.querySelector('.card')).not.toBeNull();
|
|
});
|
|
});
|
|
|
|
it('should display send telemetry when requesting enterprise trial', async () => {
|
|
const usersStore = useUsersStore(pinia);
|
|
vi.spyOn(usersStore, 'submitPersonalizationSurvey').mockResolvedValue();
|
|
|
|
const usageStore = useUsageStore(pinia);
|
|
const spyLicenseTrial = vi.spyOn(usageStore, 'requestEnterpriseLicenseTrial');
|
|
|
|
const wrapper = renderComponent();
|
|
|
|
await retry(() =>
|
|
expect(wrapper.container.querySelector('.modal-content')).toBeInTheDocument(),
|
|
);
|
|
|
|
const select = wrapper.container.querySelectorAll('.n8n-select')[3]!;
|
|
await fireEvent.click(select);
|
|
|
|
const item = select.querySelectorAll('.el-select-dropdown__item')[3];
|
|
await fireEvent.click(item);
|
|
|
|
const agreeCheckbox = wrapper.container.querySelector('.n8n-checkbox')!;
|
|
await fireEvent.click(agreeCheckbox);
|
|
|
|
const submitButton = wrapper.getByRole('button')!;
|
|
await userEvent.click(submitButton);
|
|
|
|
await retry(() => expect(spyLicenseTrial).toHaveBeenCalled());
|
|
});
|
|
});
|