diff options
Diffstat (limited to 'spec/frontend/releases/components/tag_field_new_spec.js')
-rw-r--r-- | spec/frontend/releases/components/tag_field_new_spec.js | 28 |
1 files changed, 26 insertions, 2 deletions
diff --git a/spec/frontend/releases/components/tag_field_new_spec.js b/spec/frontend/releases/components/tag_field_new_spec.js index c13b513f87e..9f500c318ea 100644 --- a/spec/frontend/releases/components/tag_field_new_spec.js +++ b/spec/frontend/releases/components/tag_field_new_spec.js @@ -1,5 +1,7 @@ import { GlDropdownItem } from '@gitlab/ui'; import { mount, shallowMount } from '@vue/test-utils'; +import axios from 'axios'; +import MockAdapter from 'axios-mock-adapter'; import Vue, { nextTick } from 'vue'; import { __ } from '~/locale'; import TagFieldNew from '~/releases/components/tag_field_new.vue'; @@ -14,6 +16,7 @@ const NONEXISTENT_TAG_NAME = 'nonexistent-tag'; describe('releases/components/tag_field_new', () => { let store; let wrapper; + let mock; let RefSelectorStub; const createComponent = ( @@ -65,11 +68,14 @@ describe('releases/components/tag_field_new', () => { links: [], }, }; + + mock = new MockAdapter(axios); + gon.api_version = 'v4'; }); afterEach(() => { wrapper.destroy(); - wrapper = null; + mock.restore(); }); const findTagNameFormGroup = () => wrapper.find('[data-testid="tag-name-field"]'); @@ -114,9 +120,14 @@ describe('releases/components/tag_field_new', () => { expect(store.state.editNew.release.tagName).toBe(updatedTagName); }); - it('shows the "Create from" field', () => { + it('hides the "Create from" field', () => { expect(findCreateFromFormGroup().exists()).toBe(false); }); + + it('fetches the release notes for the tag', () => { + const expectedUrl = `/api/v4/projects/1234/repository/tags/${updatedTagName}`; + expect(mock.history.get).toContainEqual(expect.objectContaining({ url: expectedUrl })); + }); }); }); @@ -177,6 +188,18 @@ describe('releases/components/tag_field_new', () => { await expectValidationMessageToBe('hidden'); }); + + it('displays a validation error if the tag has an associated release', async () => { + findTagNameDropdown().vm.$emit('input', 'vTest'); + findTagNameDropdown().vm.$emit('hide'); + + store.state.editNew.existingRelease = {}; + + await expectValidationMessageToBe('shown'); + expect(findTagNameFormGroup().text()).toContain( + __('Selected tag is already in use. Choose another option.'), + ); + }); }); describe('when the user has interacted with the component and the value is empty', () => { @@ -185,6 +208,7 @@ describe('releases/components/tag_field_new', () => { findTagNameDropdown().vm.$emit('hide'); await expectValidationMessageToBe('shown'); + expect(findTagNameFormGroup().text()).toContain(__('Tag name is required.')); }); }); }); |