Resolve "Copy diff file path as GFM" is broken
This commit is contained in:
parent
036c6db813
commit
202e37bbaf
|
@ -108,6 +108,9 @@ export default {
|
||||||
false,
|
false,
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
|
gfmCopyText() {
|
||||||
|
return `\`${this.diffFile.filePath}\``;
|
||||||
|
},
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
...mapActions('diffs', ['toggleFileDiscussions']),
|
...mapActions('diffs', ['toggleFileDiscussions']),
|
||||||
|
@ -191,6 +194,7 @@ export default {
|
||||||
<clipboard-button
|
<clipboard-button
|
||||||
:title="__('Copy file path to clipboard')"
|
:title="__('Copy file path to clipboard')"
|
||||||
:text="diffFile.filePath"
|
:text="diffFile.filePath"
|
||||||
|
:gfm="gfmCopyText"
|
||||||
css-class="btn-default btn-transparent btn-clipboard"
|
css-class="btn-default btn-transparent btn-clipboard"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
|
|
|
@ -31,6 +31,11 @@ export default {
|
||||||
type: String,
|
type: String,
|
||||||
required: true,
|
required: true,
|
||||||
},
|
},
|
||||||
|
gfm: {
|
||||||
|
type: String,
|
||||||
|
required: false,
|
||||||
|
default: null,
|
||||||
|
},
|
||||||
title: {
|
title: {
|
||||||
type: String,
|
type: String,
|
||||||
required: true,
|
required: true,
|
||||||
|
@ -51,6 +56,14 @@ export default {
|
||||||
default: 'btn-default',
|
default: 'btn-default',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
computed: {
|
||||||
|
clipboardText() {
|
||||||
|
if (this.gfm !== null) {
|
||||||
|
return JSON.stringify({ text: this.text, gfm: this.gfm });
|
||||||
|
}
|
||||||
|
return this.text;
|
||||||
|
},
|
||||||
|
},
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
@ -59,7 +72,7 @@ export default {
|
||||||
v-tooltip
|
v-tooltip
|
||||||
:class="cssClass"
|
:class="cssClass"
|
||||||
:title="title"
|
:title="title"
|
||||||
:data-clipboard-text="text"
|
:data-clipboard-text="clipboardText"
|
||||||
:data-container="tooltipContainer"
|
:data-container="tooltipContainer"
|
||||||
:data-placement="tooltipPlacement"
|
:data-placement="tooltipPlacement"
|
||||||
type="button"
|
type="button"
|
||||||
|
|
|
@ -0,0 +1,5 @@
|
||||||
|
---
|
||||||
|
title: Resolve Copy diff file path as GFM is broken
|
||||||
|
merge_request: 20725
|
||||||
|
author:
|
||||||
|
type: fixed
|
|
@ -303,7 +303,7 @@ describe('diff_file_header', () => {
|
||||||
|
|
||||||
const button = vm.$el.querySelector('.btn-clipboard');
|
const button = vm.$el.querySelector('.btn-clipboard');
|
||||||
expect(button).not.toBe(null);
|
expect(button).not.toBe(null);
|
||||||
expect(button.dataset.clipboardText).toBe(props.diffFile.filePath);
|
expect(button.dataset.clipboardText).toBe('{"text":"files/ruby/popen.rb","gfm":"`files/ruby/popen.rb`"}');
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('file mode', () => {
|
describe('file mode', () => {
|
||||||
|
|
|
@ -6,31 +6,47 @@ describe('clipboard button', () => {
|
||||||
const Component = Vue.extend(clipboardButton);
|
const Component = Vue.extend(clipboardButton);
|
||||||
let vm;
|
let vm;
|
||||||
|
|
||||||
beforeEach(() => {
|
|
||||||
vm = mountComponent(Component, {
|
|
||||||
text: 'copy me',
|
|
||||||
title: 'Copy this value into Clipboard!',
|
|
||||||
cssClass: 'btn-danger',
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
afterEach(() => {
|
afterEach(() => {
|
||||||
vm.$destroy();
|
vm.$destroy();
|
||||||
});
|
});
|
||||||
|
|
||||||
it('renders a button for clipboard', () => {
|
describe('without gfm', () => {
|
||||||
expect(vm.$el.tagName).toEqual('BUTTON');
|
beforeEach(() => {
|
||||||
expect(vm.$el.getAttribute('data-clipboard-text')).toEqual('copy me');
|
vm = mountComponent(Component, {
|
||||||
expect(vm.$el).toHaveSpriteIcon('duplicate');
|
text: 'copy me',
|
||||||
|
title: 'Copy this value into Clipboard!',
|
||||||
|
cssClass: 'btn-danger',
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('renders a button for clipboard', () => {
|
||||||
|
expect(vm.$el.tagName).toEqual('BUTTON');
|
||||||
|
expect(vm.$el.getAttribute('data-clipboard-text')).toEqual('copy me');
|
||||||
|
expect(vm.$el).toHaveSpriteIcon('duplicate');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should have a tooltip with default values', () => {
|
||||||
|
expect(vm.$el.getAttribute('data-original-title')).toEqual('Copy this value into Clipboard!');
|
||||||
|
expect(vm.$el.getAttribute('data-placement')).toEqual('top');
|
||||||
|
expect(vm.$el.getAttribute('data-container')).toEqual(null);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should render provided classname', () => {
|
||||||
|
expect(vm.$el.classList).toContain('btn-danger');
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should have a tooltip with default values', () => {
|
describe('with gfm', () => {
|
||||||
expect(vm.$el.getAttribute('data-original-title')).toEqual('Copy this value into Clipboard!');
|
it('sets data-clipboard-text with gfm', () => {
|
||||||
expect(vm.$el.getAttribute('data-placement')).toEqual('top');
|
vm = mountComponent(Component, {
|
||||||
expect(vm.$el.getAttribute('data-container')).toEqual(null);
|
text: 'copy me',
|
||||||
});
|
gfm: '`path/to/file`',
|
||||||
|
title: 'Copy this value into Clipboard!',
|
||||||
it('should render provided classname', () => {
|
cssClass: 'btn-danger',
|
||||||
expect(vm.$el.classList).toContain('btn-danger');
|
});
|
||||||
|
expect(vm.$el.getAttribute('data-clipboard-text')).toEqual(
|
||||||
|
'{"text":"copy me","gfm":"`path/to/file`"}',
|
||||||
|
);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
Loading…
Reference in New Issue