diff --git a/app/assets/javascripts/repository/components/header_area.vue b/app/assets/javascripts/repository/components/header_area.vue index 93c8481a3b75489458aad31731cd7358af13533e..aebc507b7f3f394d9154da09617b446d2199b508 100644 --- a/app/assets/javascripts/repository/components/header_area.vue +++ b/app/assets/javascripts/repository/components/header_area.vue @@ -335,7 +335,7 @@ export default { :show-web-ide-button="showWebIdeButton" :show-gitpod-button="showGitpodButton" /> - + diff --git a/app/assets/javascripts/repository/components/header_area/repository_overflow_menu.vue b/app/assets/javascripts/repository/components/header_area/repository_overflow_menu.vue index 55ebdcd257384355528d70430b949bcbcc604dc2..9818d955f4090cf60357f9e1cd1e7f28c3831a9f 100644 --- a/app/assets/javascripts/repository/components/header_area/repository_overflow_menu.vue +++ b/app/assets/javascripts/repository/components/header_area/repository_overflow_menu.vue @@ -1,6 +1,8 @@ @@ -42,6 +55,7 @@ export default { :toggle-text="$options.i18n.dropdownLabel" text-sr-only > + diff --git a/spec/frontend/repository/components/header_area/repository_overflow_menu_spec.js b/spec/frontend/repository/components/header_area/repository_overflow_menu_spec.js index 3f9c2483e3ec9b2456f2bb5857b788d87510855c..00d86e518e67bd77ae07e28fd53f5830ec1741e6 100644 --- a/spec/frontend/repository/components/header_area/repository_overflow_menu_spec.js +++ b/spec/frontend/repository/components/header_area/repository_overflow_menu_spec.js @@ -2,6 +2,10 @@ import { RouterLinkStub } from '@vue/test-utils'; import { GlDisclosureDropdownItem } from '@gitlab/ui'; import { shallowMountExtended } from 'helpers/vue_test_utils_helper'; import RepositoryOverflowMenu from '~/repository/components/header_area/repository_overflow_menu.vue'; +import PermalinkDropdownItem from '~/repository/components/header_area/permalink_dropdown_item.vue'; + +const testPath = '/-/tree/id-update-golang/.gitlab?ref_type=heads'; +const projectPath = 'test/project'; const defaultMockRoute = { params: { @@ -14,6 +18,7 @@ const defaultMockRoute = { ref_type: '', }, name: 'treePathDecoded', + fullPath: testPath, }; describe('RepositoryOverflowMenu', () => { @@ -23,13 +28,18 @@ describe('RepositoryOverflowMenu', () => { const findDropdownItemWithText = (text) => findDropdownItems().wrappers.find((x) => x.props('item').text === text); const findCompareItem = () => findDropdownItemWithText('Compare'); + const findPermalinkItem = () => wrapper.findComponent(PermalinkDropdownItem); - const createComponent = (route = {}, provide = {}) => { + const createComponent = (route = {}, provide = {}, props = {}) => { return shallowMountExtended(RepositoryOverflowMenu, { provide: { comparePath: null, ...provide, }, + propsData: { + projectPath, + ...props, + }, stubs: { RouterLink: RouterLinkStub, }, @@ -72,4 +82,17 @@ describe('RepositoryOverflowMenu', () => { expect(findCompareItem()).toBeUndefined(); }); }); + + describe('Permalink item', () => { + it('renders Permalink button for non-root route', () => { + expect(findPermalinkItem().props('permalinkPath')).toBe( + 'test/project/-/tree/id-update-golang/.gitlab?ref_type=heads', + ); + }); + + it('renders Permalink button with projectPath for root route', () => { + wrapper = createComponent({ fullPath: '/' }); + expect(findPermalinkItem().props('permalinkPath')).toBe('test/project'); + }); + }); }); diff --git a/spec/frontend/repository/components/header_area_spec.js b/spec/frontend/repository/components/header_area_spec.js index 6f68c509cc34f3e78d264236fd5a489686afedce..d9aad22eaa4a7684e0bd0c9b3a8d57964ac4f536 100644 --- a/spec/frontend/repository/components/header_area_spec.js +++ b/spec/frontend/repository/components/header_area_spec.js @@ -194,16 +194,13 @@ describe('HeaderArea', () => { }); describe('RepositoryOverflowMenu', () => { - it('does not render RepositoryOverflowMenu component on default ref', () => { - expect(findRepositoryOverflowMenu().exists()).toBe(false); - }); - - it('renders RepositoryOverflowMenu component with correct props when on ref different than default branch', () => { + it('renders RepositoryOverflowMenu component with correct props', () => { wrapper = createComponent({}, 'treePathDecoded', { comparePath: 'test/project/compare' }); expect(findRepositoryOverflowMenu().exists()).toBe(true); expect(findRepositoryOverflowMenu().props('comparePath')).toBe( headerAppInjected.comparePath, ); + expect(findRepositoryOverflowMenu().props('projectPath')).toBe('test/project'); }); }); });