Fix broken file name navigation on MRs
This commit is contained in:
parent
da4f77957c
commit
a577cfcbb2
|
@ -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 {
|
||||||
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 {
|
||||||
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 {
|
||||||
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"
|
||||||
|
|
|
@ -0,0 +1,5 @@
|
||||||
|
---
|
||||||
|
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';
|
||||||
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', () => {
|
||||||
|
|
||||||
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', () => {
|
||||||
|
|
||||||
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', () => {
|
||||||
|
|
Loading…
Reference in New Issue