summaryrefslogtreecommitdiff
path: root/spec/frontend/pages/admin/users/components/delete_user_modal_spec.js
diff options
context:
space:
mode:
Diffstat (limited to 'spec/frontend/pages/admin/users/components/delete_user_modal_spec.js')
-rw-r--r--spec/frontend/pages/admin/users/components/delete_user_modal_spec.js167
1 files changed, 0 insertions, 167 deletions
diff --git a/spec/frontend/pages/admin/users/components/delete_user_modal_spec.js b/spec/frontend/pages/admin/users/components/delete_user_modal_spec.js
deleted file mode 100644
index 93d9ee43179..00000000000
--- a/spec/frontend/pages/admin/users/components/delete_user_modal_spec.js
+++ /dev/null
@@ -1,167 +0,0 @@
-import { GlButton, GlFormInput } from '@gitlab/ui';
-import { shallowMount } from '@vue/test-utils';
-import DeleteUserModal from '~/pages/admin/users/components/delete_user_modal.vue';
-import OncallSchedulesList from '~/vue_shared/components/oncall_schedules_list.vue';
-import ModalStub from './stubs/modal_stub';
-
-const TEST_DELETE_USER_URL = 'delete-url';
-const TEST_BLOCK_USER_URL = 'block-url';
-const TEST_CSRF = 'csrf';
-
-describe('User Operation confirmation modal', () => {
- let wrapper;
- let formSubmitSpy;
-
- const findButton = (variant, category) =>
- wrapper
- .findAll(GlButton)
- .filter((w) => w.attributes('variant') === variant && w.attributes('category') === category)
- .at(0);
- const findForm = () => wrapper.find('form');
- const findUsernameInput = () => wrapper.findComponent(GlFormInput);
- const findPrimaryButton = () => findButton('danger', 'primary');
- const findSecondaryButton = () => findButton('danger', 'secondary');
- const findAuthenticityToken = () => new FormData(findForm().element).get('authenticity_token');
- const getUsername = () => findUsernameInput().attributes('value');
- const getMethodParam = () => new FormData(findForm().element).get('_method');
- const getFormAction = () => findForm().attributes('action');
- const findOnCallSchedulesList = () => wrapper.findComponent(OncallSchedulesList);
-
- const setUsername = (username) => {
- findUsernameInput().vm.$emit('input', username);
- };
-
- const username = 'username';
- const badUsername = 'bad_username';
- const oncallSchedules = '["schedule1", "schedule2"]';
-
- const createComponent = (props = {}) => {
- wrapper = shallowMount(DeleteUserModal, {
- propsData: {
- username,
- title: 'title',
- content: 'content',
- action: 'action',
- secondaryAction: 'secondaryAction',
- deleteUserUrl: TEST_DELETE_USER_URL,
- blockUserUrl: TEST_BLOCK_USER_URL,
- csrfToken: TEST_CSRF,
- oncallSchedules,
- ...props,
- },
- stubs: {
- GlModal: ModalStub,
- },
- });
- };
-
- beforeEach(() => {
- formSubmitSpy = jest.spyOn(HTMLFormElement.prototype, 'submit').mockImplementation();
- });
-
- afterEach(() => {
- wrapper.destroy();
- wrapper = null;
- });
-
- it('renders modal with form included', () => {
- createComponent();
- expect(wrapper.element).toMatchSnapshot();
- });
-
- describe('on created', () => {
- beforeEach(() => {
- createComponent();
- });
-
- it('has disabled buttons', () => {
- expect(findPrimaryButton().attributes('disabled')).toBeTruthy();
- expect(findSecondaryButton().attributes('disabled')).toBeTruthy();
- });
- });
-
- describe('with incorrect username', () => {
- beforeEach(() => {
- createComponent();
- setUsername(badUsername);
-
- return wrapper.vm.$nextTick();
- });
-
- it('shows incorrect username', () => {
- expect(getUsername()).toEqual(badUsername);
- });
-
- it('has disabled buttons', () => {
- expect(findPrimaryButton().attributes('disabled')).toBeTruthy();
- expect(findSecondaryButton().attributes('disabled')).toBeTruthy();
- });
- });
-
- describe('with correct username', () => {
- beforeEach(() => {
- createComponent();
- setUsername(username);
-
- return wrapper.vm.$nextTick();
- });
-
- it('shows correct username', () => {
- expect(getUsername()).toEqual(username);
- });
-
- it('has enabled buttons', () => {
- expect(findPrimaryButton().attributes('disabled')).toBeFalsy();
- expect(findSecondaryButton().attributes('disabled')).toBeFalsy();
- });
-
- describe('when primary action is submitted', () => {
- beforeEach(() => {
- findPrimaryButton().vm.$emit('click');
-
- return wrapper.vm.$nextTick();
- });
-
- it('clears the input', () => {
- expect(getUsername()).toEqual('');
- });
-
- it('has correct form attributes and calls submit', () => {
- expect(getFormAction()).toBe(TEST_DELETE_USER_URL);
- expect(getMethodParam()).toBe('delete');
- expect(findAuthenticityToken()).toBe(TEST_CSRF);
- expect(formSubmitSpy).toHaveBeenCalled();
- });
- });
-
- describe('when secondary action is submitted', () => {
- beforeEach(() => {
- findSecondaryButton().vm.$emit('click');
-
- return wrapper.vm.$nextTick();
- });
-
- it('has correct form attributes and calls submit', () => {
- expect(getFormAction()).toBe(TEST_BLOCK_USER_URL);
- expect(getMethodParam()).toBe('put');
- expect(findAuthenticityToken()).toBe(TEST_CSRF);
- expect(formSubmitSpy).toHaveBeenCalled();
- });
- });
- });
-
- describe('Related oncall-schedules list', () => {
- it('does NOT render the list when user has no related schedules', () => {
- createComponent({ oncallSchedules: '[]' });
- expect(findOnCallSchedulesList().exists()).toBe(false);
- });
-
- it('renders the list when user has related schedules', () => {
- createComponent();
-
- const schedules = findOnCallSchedulesList();
- expect(schedules.exists()).toBe(true);
- expect(schedules.props('schedules')).toEqual(JSON.parse(oncallSchedules));
- });
- });
-});