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');
});
});
});