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:
Diffstat (limited to 'spec/frontend/sidebar/lock/issuable_lock_form_spec.js')
-rw-r--r--spec/frontend/sidebar/lock/issuable_lock_form_spec.js45
1 files changed, 41 insertions, 4 deletions
diff --git a/spec/frontend/sidebar/lock/issuable_lock_form_spec.js b/spec/frontend/sidebar/lock/issuable_lock_form_spec.js
index 8478d3d674d..bb757fdf63b 100644
--- a/spec/frontend/sidebar/lock/issuable_lock_form_spec.js
+++ b/spec/frontend/sidebar/lock/issuable_lock_form_spec.js
@@ -1,17 +1,23 @@
import { shallowMount } from '@vue/test-utils';
-import { nextTick } from 'vue';
+import Vue, { nextTick } from 'vue';
+import Vuex from 'vuex';
import { mockTracking, triggerEvent } from 'helpers/tracking_helper';
import { createMockDirective, getBinding } from 'helpers/vue_mock_directive';
-import { createStore as createMrStore } from '~/mr_notes/stores';
import createStore from '~/notes/stores';
import EditForm from '~/sidebar/components/lock/edit_form.vue';
import IssuableLockForm from '~/sidebar/components/lock/issuable_lock_form.vue';
+import toast from '~/vue_shared/plugins/global_toast';
import { ISSUABLE_TYPE_ISSUE, ISSUABLE_TYPE_MR } from './constants';
+jest.mock('~/vue_shared/plugins/global_toast');
+
+Vue.use(Vuex);
+
describe('IssuableLockForm', () => {
let wrapper;
let store;
let issuableType; // Either ISSUABLE_TYPE_ISSUE or ISSUABLE_TYPE_MR
+ let updateLockedAttribute;
const setIssuableType = (pageType) => {
issuableType = pageType;
@@ -29,16 +35,27 @@ describe('IssuableLockForm', () => {
store = createStore();
store.getters.getNoteableData.targetType = 'issue';
} else {
- store = createMrStore();
+ updateLockedAttribute = jest.fn().mockResolvedValue();
+ store = new Vuex.Store({
+ getters: {
+ getNoteableData: () => ({ targetType: issuableType }),
+ },
+ actions: {
+ updateLockedAttribute,
+ },
+ });
}
store.getters.getNoteableData.discussion_locked = isLocked;
};
- const createComponent = ({ props = {} }) => {
+ const createComponent = ({ props = {} }, movedMrSidebar = false) => {
wrapper = shallowMount(IssuableLockForm, {
store,
provide: {
fullPath: '',
+ glFeatures: {
+ movedMrSidebar,
+ },
},
propsData: {
isEditable: true,
@@ -144,4 +161,24 @@ describe('IssuableLockForm', () => {
});
});
});
+
+ describe('merge requests', () => {
+ beforeEach(() => {
+ setIssuableType('merge_request');
+ });
+
+ it.each`
+ locked | message
+ ${true} | ${'Merge request locked.'}
+ ${false} | ${'Merge request unlocked.'}
+ `('displays $message when merge request is $locked', async ({ locked, message }) => {
+ initStore(locked);
+
+ createComponent({}, true);
+
+ await wrapper.find('.dropdown-item').trigger('click');
+
+ expect(toast).toHaveBeenCalledWith(message);
+ });
+ });
});