Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2020-03-24 00:09:46 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2020-03-24 00:09:46 +0300
commit8a7aaf86831d2a556578ae558a4fcab8bb659b20 (patch)
tree61c2b55aa48ff8e853e546cd3009dfc5423279c8 /spec/javascripts
parent967812838c7e7742729a4c7aeb9859f98a509622 (diff)
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec/javascripts')
-rw-r--r--spec/javascripts/profile/account/components/delete_account_modal_spec.js132
-rw-r--r--spec/javascripts/profile/account/components/update_username_spec.js172
-rw-r--r--spec/javascripts/vue_shared/components/project_selector/project_selector_spec.js1
3 files changed, 1 insertions, 304 deletions
diff --git a/spec/javascripts/profile/account/components/delete_account_modal_spec.js b/spec/javascripts/profile/account/components/delete_account_modal_spec.js
deleted file mode 100644
index e2c557d79a9..00000000000
--- a/spec/javascripts/profile/account/components/delete_account_modal_spec.js
+++ /dev/null
@@ -1,132 +0,0 @@
-import Vue from 'vue';
-
-import mountComponent from 'spec/helpers/vue_mount_component_helper';
-import deleteAccountModal from '~/profile/account/components/delete_account_modal.vue';
-
-describe('DeleteAccountModal component', () => {
- const actionUrl = `${gl.TEST_HOST}/delete/user`;
- const username = 'hasnoname';
- let Component;
- let vm;
-
- beforeEach(() => {
- Component = Vue.extend(deleteAccountModal);
- });
-
- afterEach(() => {
- vm.$destroy();
- });
-
- const findElements = () => {
- const confirmation = vm.confirmWithPassword ? 'password' : 'username';
- return {
- form: vm.$refs.form,
- input: vm.$el.querySelector(`[name="${confirmation}"]`),
- submitButton: vm.$el.querySelector('.btn-danger'),
- };
- };
-
- describe('with password confirmation', () => {
- beforeEach(done => {
- vm = mountComponent(Component, {
- actionUrl,
- confirmWithPassword: true,
- username,
- });
-
- vm.isOpen = true;
-
- Vue.nextTick()
- .then(done)
- .catch(done.fail);
- });
-
- it('does not accept empty password', done => {
- const { form, input, submitButton } = findElements();
- spyOn(form, 'submit');
- input.value = '';
- input.dispatchEvent(new Event('input'));
-
- Vue.nextTick()
- .then(() => {
- expect(vm.enteredPassword).toBe(input.value);
- expect(submitButton).toHaveAttr('disabled', 'disabled');
- submitButton.click();
-
- expect(form.submit).not.toHaveBeenCalled();
- })
- .then(done)
- .catch(done.fail);
- });
-
- it('submits form with password', done => {
- const { form, input, submitButton } = findElements();
- spyOn(form, 'submit');
- input.value = 'anything';
- input.dispatchEvent(new Event('input'));
-
- Vue.nextTick()
- .then(() => {
- expect(vm.enteredPassword).toBe(input.value);
- expect(submitButton).not.toHaveAttr('disabled', 'disabled');
- submitButton.click();
-
- expect(form.submit).toHaveBeenCalled();
- })
- .then(done)
- .catch(done.fail);
- });
- });
-
- describe('with username confirmation', () => {
- beforeEach(done => {
- vm = mountComponent(Component, {
- actionUrl,
- confirmWithPassword: false,
- username,
- });
-
- vm.isOpen = true;
-
- Vue.nextTick()
- .then(done)
- .catch(done.fail);
- });
-
- it('does not accept wrong username', done => {
- const { form, input, submitButton } = findElements();
- spyOn(form, 'submit');
- input.value = 'this is wrong';
- input.dispatchEvent(new Event('input'));
-
- Vue.nextTick()
- .then(() => {
- expect(vm.enteredUsername).toBe(input.value);
- expect(submitButton).toHaveAttr('disabled', 'disabled');
- submitButton.click();
-
- expect(form.submit).not.toHaveBeenCalled();
- })
- .then(done)
- .catch(done.fail);
- });
-
- it('submits form with correct username', done => {
- const { form, input, submitButton } = findElements();
- spyOn(form, 'submit');
- input.value = username;
- input.dispatchEvent(new Event('input'));
-
- Vue.nextTick()
- .then(() => {
- expect(vm.enteredUsername).toBe(input.value);
- expect(submitButton).not.toHaveAttr('disabled', 'disabled');
- submitButton.click();
-
- expect(form.submit).toHaveBeenCalled();
- })
- .then(done)
- .catch(done.fail);
- });
- });
-});
diff --git a/spec/javascripts/profile/account/components/update_username_spec.js b/spec/javascripts/profile/account/components/update_username_spec.js
deleted file mode 100644
index 902e00b85fd..00000000000
--- a/spec/javascripts/profile/account/components/update_username_spec.js
+++ /dev/null
@@ -1,172 +0,0 @@
-import Vue from 'vue';
-import MockAdapter from 'axios-mock-adapter';
-import mountComponent from 'spec/helpers/vue_mount_component_helper';
-import axios from '~/lib/utils/axios_utils';
-
-import updateUsername from '~/profile/account/components/update_username.vue';
-
-describe('UpdateUsername component', () => {
- const rootUrl = gl.TEST_HOST;
- const actionUrl = `${gl.TEST_HOST}/update/username`;
- const username = 'hasnoname';
- const newUsername = 'new_username';
- let Component;
- let vm;
- let axiosMock;
-
- beforeEach(() => {
- axiosMock = new MockAdapter(axios);
- Component = Vue.extend(updateUsername);
- vm = mountComponent(Component, {
- actionUrl,
- rootUrl,
- initialUsername: username,
- });
- });
-
- afterEach(() => {
- vm.$destroy();
- axiosMock.restore();
- });
-
- const findElements = () => {
- const modalSelector = `#${vm.$options.modalId}`;
-
- return {
- input: vm.$el.querySelector(`#${vm.$options.inputId}`),
- openModalBtn: vm.$el.querySelector(`[data-target="${modalSelector}"]`),
- modal: vm.$el.querySelector(modalSelector),
- modalBody: vm.$el.querySelector(`${modalSelector} .modal-body`),
- modalHeader: vm.$el.querySelector(`${modalSelector} .modal-title`),
- confirmModalBtn: vm.$el.querySelector(`${modalSelector} .btn-warning`),
- };
- };
-
- it('has a disabled button if the username was not changed', done => {
- const { input, openModalBtn } = findElements();
- input.dispatchEvent(new Event('input'));
-
- Vue.nextTick()
- .then(() => {
- expect(vm.username).toBe(username);
- expect(vm.newUsername).toBe(username);
- expect(openModalBtn).toBeDisabled();
- })
- .then(done)
- .catch(done.fail);
- });
-
- it('has an enabled button which if the username was changed', done => {
- const { input, openModalBtn } = findElements();
- input.value = newUsername;
- input.dispatchEvent(new Event('input'));
-
- Vue.nextTick()
- .then(() => {
- expect(vm.username).toBe(username);
- expect(vm.newUsername).toBe(newUsername);
- expect(openModalBtn).not.toBeDisabled();
- })
- .then(done)
- .catch(done.fail);
- });
-
- it('confirmation modal contains proper header and body', done => {
- const { modalBody, modalHeader } = findElements();
-
- vm.newUsername = newUsername;
-
- Vue.nextTick()
- .then(() => {
- expect(modalHeader.textContent).toContain('Change username?');
- expect(modalBody.textContent).toContain(
- `You are going to change the username ${username} to ${newUsername}`,
- );
- })
- .then(done)
- .catch(done.fail);
- });
-
- it('confirmation modal should escape usernames properly', done => {
- const { modalBody } = findElements();
-
- vm.username = '<i>Italic</i>';
- vm.newUsername = vm.username;
-
- Vue.nextTick()
- .then(() => {
- expect(modalBody.innerHTML).toContain('&lt;i&gt;Italic&lt;/i&gt;');
- expect(modalBody.innerHTML).not.toContain(vm.username);
- })
- .then(done)
- .catch(done.fail);
- });
-
- it('executes API call on confirmation button click', done => {
- const { confirmModalBtn } = findElements();
-
- axiosMock.onPut(actionUrl).replyOnce(() => [200, { message: 'Username changed' }]);
- spyOn(axios, 'put').and.callThrough();
-
- vm.newUsername = newUsername;
-
- Vue.nextTick()
- .then(() => {
- confirmModalBtn.click();
-
- expect(axios.put).toHaveBeenCalledWith(actionUrl, { user: { username: newUsername } });
- })
- .then(done)
- .catch(done.fail);
- });
-
- it('sets the username after a successful update', done => {
- const { input, openModalBtn } = findElements();
-
- axiosMock.onPut(actionUrl).replyOnce(() => {
- expect(input).toBeDisabled();
- expect(openModalBtn).toBeDisabled();
-
- return [200, { message: 'Username changed' }];
- });
-
- vm.newUsername = newUsername;
-
- vm.onConfirm()
- .then(() => {
- expect(vm.username).toBe(newUsername);
- expect(vm.newUsername).toBe(newUsername);
- expect(input).not.toBeDisabled();
- expect(input.value).toBe(newUsername);
- expect(openModalBtn).toBeDisabled();
- })
- .then(done)
- .catch(done.fail);
- });
-
- it('does not set the username after a erroneous update', done => {
- const { input, openModalBtn } = findElements();
-
- axiosMock.onPut(actionUrl).replyOnce(() => {
- expect(input).toBeDisabled();
- expect(openModalBtn).toBeDisabled();
-
- return [400, { message: 'Invalid username' }];
- });
-
- const invalidUsername = 'anything.git';
- vm.newUsername = invalidUsername;
-
- vm.onConfirm()
- .then(() => done.fail('Expected onConfirm to throw!'))
- .catch(() => {
- expect(vm.username).toBe(username);
- expect(vm.newUsername).toBe(invalidUsername);
- expect(input).not.toBeDisabled();
- expect(input.value).toBe(invalidUsername);
- expect(openModalBtn).not.toBeDisabled();
- })
- .then(done)
- .catch(done.fail);
- });
-});
diff --git a/spec/javascripts/vue_shared/components/project_selector/project_selector_spec.js b/spec/javascripts/vue_shared/components/project_selector/project_selector_spec.js
index 178df54b465..5d995f06abb 100644
--- a/spec/javascripts/vue_shared/components/project_selector/project_selector_spec.js
+++ b/spec/javascripts/vue_shared/components/project_selector/project_selector_spec.js
@@ -22,6 +22,7 @@ describe('ProjectSelector component', () => {
beforeEach(() => {
jasmine.clock().install();
+ jasmine.clock().mockDate();
wrapper = mount(Vue.extend(ProjectSelector), {
localVue,