Commit 9f006df6 authored by Mike Greiling's avatar Mike Greiling

Merge branch '50185-fix-broken-file-name-navigation' into 'master'

Fix broken file name navigation on MRs

Closes #50185

See merge request gitlab-org/gitlab-ce!22109
parents da4f7795 a577cfcb
...@@ -20,6 +20,11 @@ export default { ...@@ -20,6 +20,11 @@ export default {
Tooltip, Tooltip,
}, },
props: { props: {
discussionPath: {
type: String,
required: false,
default: '',
},
diffFile: { diffFile: {
type: Object, type: Object,
required: true, required: true,
...@@ -65,8 +70,7 @@ export default { ...@@ -65,8 +70,7 @@ export default {
if (this.diffFile.submodule) { if (this.diffFile.submodule) {
return this.diffFile.submoduleTreeUrl || this.diffFile.submoduleLink; return this.diffFile.submoduleTreeUrl || this.diffFile.submoduleLink;
} }
return this.discussionPath;
return `#${this.diffFile.fileHash}`;
}, },
filePath() { filePath() {
if (this.diffFile.submodule) { if (this.diffFile.submodule) {
...@@ -152,7 +156,7 @@ export default { ...@@ -152,7 +156,7 @@ export default {
v-once v-once
ref="titleWrapper" ref="titleWrapper"
:href="titleLink" :href="titleLink"
class="append-right-4" class="append-right-4 js-title-wrapper"
> >
<file-icon <file-icon
:file-name="filePath" :file-name="filePath"
......
...@@ -94,6 +94,7 @@ export default { ...@@ -94,6 +94,7 @@ export default {
class="diff-file file-holder" class="diff-file file-holder"
> >
<diff-file-header <diff-file-header
:discussion-path="discussion.discussionPath"
:diff-file="diffFile" :diff-file="diffFile"
:can-current-user-fork="false" :can-current-user-fork="false"
:discussions-expanded="isDiscussionsExpanded" :discussions-expanded="isDiscussionsExpanded"
......
---
title: Fix broken file name navigation on MRs
merge_request: 22109
author:
type: fixed
...@@ -6,6 +6,8 @@ import DiffFileHeader from '~/diffs/components/diff_file_header.vue'; ...@@ -6,6 +6,8 @@ import DiffFileHeader from '~/diffs/components/diff_file_header.vue';
import { convertObjectPropsToCamelCase } from '~/lib/utils/common_utils'; import { convertObjectPropsToCamelCase } from '~/lib/utils/common_utils';
import { mountComponentWithStore } from 'spec/helpers/vue_mount_component_helper'; import { mountComponentWithStore } from 'spec/helpers/vue_mount_component_helper';
Vue.use(Vuex);
const discussionFixture = 'merge_requests/diff_discussion.json'; const discussionFixture = 'merge_requests/diff_discussion.json';
describe('diff_file_header', () => { describe('diff_file_header', () => {
...@@ -58,19 +60,19 @@ describe('diff_file_header', () => { ...@@ -58,19 +60,19 @@ describe('diff_file_header', () => {
describe('titleLink', () => { describe('titleLink', () => {
beforeEach(() => { beforeEach(() => {
props.discussionPath = 'link://to/discussion';
Object.assign(props.diffFile, { Object.assign(props.diffFile, {
fileHash: 'badc0ffee',
submoduleLink: 'link://to/submodule', submoduleLink: 'link://to/submodule',
submoduleTreeUrl: 'some://tree/url', submoduleTreeUrl: 'some://tree/url',
}); });
}); });
it('returns the fileHash for files', () => { it('returns the discussionPath for files', () => {
props.diffFile.submodule = false; props.diffFile.submodule = false;
vm = mountComponentWithStore(Component, { props, store }); vm = mountComponentWithStore(Component, { props, store });
expect(vm.titleLink).toBe(`#${props.diffFile.fileHash}`); expect(vm.titleLink).toBe(props.discussionPath);
}); });
it('returns the submoduleTreeUrl for submodules', () => { it('returns the submoduleTreeUrl for submodules', () => {
...@@ -91,6 +93,13 @@ describe('diff_file_header', () => { ...@@ -91,6 +93,13 @@ describe('diff_file_header', () => {
expect(vm.titleLink).toBe(props.diffFile.submoduleLink); expect(vm.titleLink).toBe(props.diffFile.submoduleLink);
}); });
it('sets the correct path to the discussion', () => {
props.discussionPath = 'link://to/discussion';
vm = mountComponentWithStore(Component, { props, store });
const href = vm.$el.querySelector('.js-title-wrapper').getAttribute('href');
expect(href).toBe(vm.discussionPath);
});
}); });
describe('filePath', () => { describe('filePath', () => {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment