diff options
Diffstat (limited to 'spec/frontend/releases/components/release_block_header_spec.js')
-rw-r--r-- | spec/frontend/releases/components/release_block_header_spec.js | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/spec/frontend/releases/components/release_block_header_spec.js b/spec/frontend/releases/components/release_block_header_spec.js index 44f6f63fa79..9c6cbc86d3c 100644 --- a/spec/frontend/releases/components/release_block_header_spec.js +++ b/spec/frontend/releases/components/release_block_header_spec.js @@ -4,6 +4,7 @@ import { GlLink } from '@gitlab/ui'; import ReleaseBlockHeader from '~/releases/components/release_block_header.vue'; import { convertObjectPropsToCamelCase } from '~/lib/utils/common_utils'; import { release as originalRelease } from '../mock_data'; +import { BACK_URL_PARAM } from '~/releases/constants'; describe('Release block header', () => { let wrapper; @@ -27,6 +28,7 @@ describe('Release block header', () => { const findHeader = () => wrapper.find('h2'); const findHeaderLink = () => findHeader().find(GlLink); + const findEditButton = () => wrapper.find('.js-edit-button'); describe('when _links.self is provided', () => { beforeEach(() => { @@ -51,4 +53,39 @@ describe('Release block header', () => { expect(findHeaderLink().exists()).toBe(false); }); }); + + describe('when _links.edit_url is provided', () => { + const currentUrl = 'https://example.gitlab.com/path'; + + beforeEach(() => { + Object.defineProperty(window, 'location', { + writable: true, + value: { + href: currentUrl, + }, + }); + + factory(); + }); + + it('renders an edit button', () => { + expect(findEditButton().exists()).toBe(true); + }); + + it('renders the edit button with the correct href', () => { + const expectedQueryParam = `${BACK_URL_PARAM}=${encodeURIComponent(currentUrl)}`; + const expectedUrl = `${release._links.editUrl}?${expectedQueryParam}`; + expect(findEditButton().attributes().href).toBe(expectedUrl); + }); + }); + + describe('when _links.edit is missing', () => { + beforeEach(() => { + factory({ _links: { editUrl: null } }); + }); + + it('does not render an edit button', () => { + expect(findEditButton().exists()).toBe(false); + }); + }); }); |