diff options
Diffstat (limited to 'spec/frontend/sidebar/components/labels/labels_select_widget')
3 files changed, 42 insertions, 9 deletions
diff --git a/spec/frontend/sidebar/components/labels/labels_select_widget/dropdown_value_spec.js b/spec/frontend/sidebar/components/labels/labels_select_widget/dropdown_value_spec.js index d70b989b493..21068c2858d 100644 --- a/spec/frontend/sidebar/components/labels/labels_select_widget/dropdown_value_spec.js +++ b/spec/frontend/sidebar/components/labels/labels_select_widget/dropdown_value_spec.js @@ -3,14 +3,15 @@ import { shallowMount } from '@vue/test-utils'; import DropdownValue from '~/sidebar/components/labels/labels_select_widget/dropdown_value.vue'; -import { mockRegularLabel, mockScopedLabel } from './mock_data'; +import { mockRegularLabel, mockScopedLabel, mockLockedLabel } from './mock_data'; describe('DropdownValue', () => { let wrapper; const findAllLabels = () => wrapper.findAllComponents(GlLabel); - const findRegularLabel = () => findAllLabels().at(1); + const findRegularLabel = () => findAllLabels().at(2); const findScopedLabel = () => findAllLabels().at(0); + const findLockedLabel = () => findAllLabels().at(1); const findWrapper = () => wrapper.find('[data-testid="value-wrapper"]'); const findEmptyPlaceholder = () => wrapper.find('[data-testid="empty-placeholder"]'); @@ -18,7 +19,7 @@ describe('DropdownValue', () => { wrapper = shallowMount(DropdownValue, { slots, propsData: { - selectedLabels: [mockRegularLabel, mockScopedLabel], + selectedLabels: [mockLockedLabel, mockRegularLabel, mockScopedLabel], allowLabelRemove: true, labelsFilterBasePath: '/gitlab-org/my-project/issues', labelsFilterParam: 'label_name', @@ -69,8 +70,8 @@ describe('DropdownValue', () => { expect(findEmptyPlaceholder().exists()).toBe(false); }); - it('renders a list of two labels', () => { - expect(findAllLabels().length).toBe(2); + it('renders a list of three labels', () => { + expect(findAllLabels().length).toBe(3); }); it('passes correct props to the regular label', () => { @@ -96,5 +97,19 @@ describe('DropdownValue', () => { wrapper.find('.sidebar-collapsed-icon').trigger('click'); expect(wrapper.emitted('onCollapsedValueClick')).toEqual([[]]); }); + + it('does not show close button if label is locked', () => { + createComponent({ + supportsLockOnMerge: true, + }); + expect(findLockedLabel().props('showCloseButton')).toBe(false); + }); + + it('shows close button if label is not locked', () => { + createComponent({ + supportsLockOnMerge: true, + }); + expect(findRegularLabel().props('showCloseButton')).toBe(true); + }); }); }); diff --git a/spec/frontend/sidebar/components/labels/labels_select_widget/embedded_labels_list_spec.js b/spec/frontend/sidebar/components/labels/labels_select_widget/embedded_labels_list_spec.js index 715dd4e034e..c516dddf0ce 100644 --- a/spec/frontend/sidebar/components/labels/labels_select_widget/embedded_labels_list_spec.js +++ b/spec/frontend/sidebar/components/labels/labels_select_widget/embedded_labels_list_spec.js @@ -1,7 +1,7 @@ import { GlLabel } from '@gitlab/ui'; import { shallowMountExtended } from 'helpers/vue_test_utils_helper'; import EmbeddedLabelsList from '~/sidebar/components/labels/labels_select_widget/embedded_labels_list.vue'; -import { mockRegularLabel, mockScopedLabel } from './mock_data'; +import { mockRegularLabel, mockScopedLabel, mockLockedLabel } from './mock_data'; describe('EmbeddedLabelsList', () => { let wrapper; @@ -13,12 +13,13 @@ describe('EmbeddedLabelsList', () => { .at(0); const findRegularLabel = () => findLabelByTitle(mockRegularLabel.title); const findScopedLabel = () => findLabelByTitle(mockScopedLabel.title); + const findLockedLabel = () => findLabelByTitle(mockLockedLabel.title); const createComponent = (props = {}, slots = {}) => { wrapper = shallowMountExtended(EmbeddedLabelsList, { slots, propsData: { - selectedLabels: [mockRegularLabel, mockScopedLabel], + selectedLabels: [mockRegularLabel, mockScopedLabel, mockLockedLabel], allowLabelRemove: true, labelsFilterBasePath: '/gitlab-org/my-project/issues', labelsFilterParam: 'label_name', @@ -47,8 +48,8 @@ describe('EmbeddedLabelsList', () => { createComponent(); }); - it('renders a list of two labels', () => { - expect(findAllLabels()).toHaveLength(2); + it('renders a list of three labels', () => { + expect(findAllLabels()).toHaveLength(3); }); it('passes correct props to the regular label', () => { @@ -69,5 +70,12 @@ describe('EmbeddedLabelsList', () => { findRegularLabel().vm.$emit('close'); expect(wrapper.emitted('onLabelRemove')).toStrictEqual([[mockRegularLabel.id]]); }); + + it('does not show close button if label is locked', () => { + createComponent({ + supportsLockOnMerge: true, + }); + expect(findLockedLabel().props('showCloseButton')).toBe(false); + }); }); }); diff --git a/spec/frontend/sidebar/components/labels/labels_select_widget/mock_data.js b/spec/frontend/sidebar/components/labels/labels_select_widget/mock_data.js index b0b473625bb..5039f00fe4b 100644 --- a/spec/frontend/sidebar/components/labels/labels_select_widget/mock_data.js +++ b/spec/frontend/sidebar/components/labels/labels_select_widget/mock_data.js @@ -14,6 +14,16 @@ export const mockScopedLabel = { textColor: '#FFFFFF', }; +export const mockLockedLabel = { + id: 30, + title: 'Bar Label', + description: 'Bar', + color: '#DADA55', + textColor: '#FFFFFF', + lockOnMerge: true, + lock_on_merge: true, +}; + export const mockLabels = [ mockRegularLabel, mockScopedLabel, |