gitlab-org--gitlab-foss/spec/frontend/sidebar/confidential_issue_sidebar_...

86 lines
2.2 KiB
JavaScript
Raw Normal View History

import { shallowMount } from '@vue/test-utils';
import ConfidentialIssueSidebar from '~/sidebar/components/confidential/confidential_issue_sidebar.vue';
import { mockTracking, triggerEvent } from 'helpers/tracking_helper';
import EditForm from '~/sidebar/components/confidential/edit_form.vue';
2017-08-07 23:56:16 +00:00
describe('Confidential Issue Sidebar Block', () => {
let wrapper;
2017-08-07 23:56:16 +00:00
const createComponent = propsData => {
2017-08-07 23:56:16 +00:00
const service = {
2018-05-28 11:41:30 +00:00
update: () => Promise.resolve(true),
2017-08-07 23:56:16 +00:00
};
wrapper = shallowMount(ConfidentialIssueSidebar, {
2017-08-07 23:56:16 +00:00
propsData: {
service,
...propsData,
2017-08-07 23:56:16 +00:00
},
sync: false,
});
};
it.each`
isConfidential | isEditable
${false} | ${false}
${false} | ${true}
${true} | ${false}
${true} | ${true}
`(
'renders for isConfidential = $isConfidential and isEditable = $isEditable',
({ isConfidential, isEditable }) => {
createComponent({
isConfidential,
isEditable,
});
expect(wrapper.element).toMatchSnapshot();
},
);
afterEach(() => {
wrapper.destroy();
2017-08-07 23:56:16 +00:00
});
describe('if editable', () => {
beforeEach(() => {
createComponent({
isConfidential: true,
isEditable: true,
});
});
2017-08-07 23:56:16 +00:00
it('displays the edit form when editable', () => {
wrapper.setData({ edit: false });
2017-08-07 23:56:16 +00:00
wrapper.find({ ref: 'editLink' }).trigger('click');
2017-08-07 23:56:16 +00:00
return wrapper.vm.$nextTick().then(() => {
expect(wrapper.find(EditForm).exists()).toBe(true);
});
2017-08-07 23:56:16 +00:00
});
it('displays the edit form when opened from collapsed state', () => {
wrapper.setData({ edit: false });
wrapper.find({ ref: 'collapseIcon' }).trigger('click');
return wrapper.vm.$nextTick().then(() => {
expect(wrapper.find(EditForm).exists()).toBe(true);
});
});
it('tracks the event when "Edit" is clicked', () => {
const spy = mockTracking('_category_', wrapper.element, jest.spyOn);
const editLink = wrapper.find({ ref: 'editLink' });
triggerEvent(editLink.element);
expect(spy).toHaveBeenCalledWith('_category_', 'click_edit_button', {
label: 'right_sidebar',
property: 'confidentiality',
});
});
});
2017-08-07 23:56:16 +00:00
});