Skip to content

Commit 158ab34

Browse files
committed
fix: only show delete image button when editing
Also test for it being shown and triggering the deleteNode when editing. Signed-off-by: Max <max@nextcloud.com>
1 parent 842fbe7 commit 158ab34

2 files changed

Lines changed: 27 additions & 9 deletions

File tree

src/nodes/ImageView.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@
4141
type="text"
4242
:value="alt"
4343
@keyup.enter="updateAlt()">
44-
<div v-if="showIcons"
44+
<div v-if="editor.isEditable && showIcons"
4545
class="trash-icon"
4646
title="Delete this image"
4747
@click="deleteNode">

src/tests/nodes/ImageView.spec.js

Lines changed: 26 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,42 +10,60 @@ global.OC = {
1010

1111
describe('Image View src attribute based on markdown', () => {
1212

13-
const factory = attrs => {
13+
const factory = (attrs, options = {}) => {
1414
const propsData = {
15-
extension: { options: {currentDirectory: '/current'} },
16-
node: {attrs}
15+
extension: { options: { currentDirectory: '/current' } },
16+
editor: { isEditable: options.isEditable ?? true },
17+
node: { attrs },
18+
deleteNode: options.deleteNode ?? function() {},
1719
}
1820
const data = () => ({
1921
imageLoaded: true,
2022
loaded: true,
2123
failed: false,
24+
showIcons: true,
2225
})
2326
return shallowMount(ImageView, {propsData, data})
2427
}
2528

2629
test('old style is used as is', () => {
2730
const src = '/core/preview?fileId=123#mimetype=image%2Fjpeg'
28-
const wrapper = factory({src})
31+
const wrapper = factory({ src })
2932
expect(wrapper.find('.image__main').attributes('src')).toBe(src)
3033
})
3134

35+
test('has button to remove image', () => {
36+
const deleteNode = jest.fn()
37+
const src = '/core/preview?fileId=123#mimetype=image%2Fjpeg'
38+
const wrapper = factory({ src }, { deleteNode })
39+
wrapper.find('.image .trash-icon').trigger('click')
40+
expect(deleteNode).toHaveBeenCalled()
41+
})
42+
43+
test('no button to remove image when not editable', () => {
44+
const src = '/core/preview?fileId=123#mimetype=image%2Fjpeg'
45+
const wrapper = factory({ src }, { isEditable: false })
46+
expect(wrapper.find('.image__main').attributes('src')).toBe(src)
47+
expect(wrapper.find('.image .trash-icon').exists()).toBeFalsy()
48+
})
49+
3250
test('old style with index.php is used as is', () => {
3351
const src = '/index.php/core/preview?fileId=9&x=1024&y=1024&a=true#mimetype=image%2Fjpeg&hasPreview=true&fileId=9'
34-
const wrapper = factory({src})
52+
const wrapper = factory({ src })
3553
expect(wrapper.find('.image__main').attributes('src')).toBe(src)
3654
})
3755

3856
test('fileId is used for preview url', () => {
3957
const src = '/Media/photo.jpeg?fileId=7#mimetype=image%2Fjpeg&hasPreview=true'
40-
const wrapper = factory({src})
58+
const wrapper = factory({ src })
4159
expect(wrapper.vm.fileId).toBe('7')
4260
expect(wrapper.find('.image__main').attributes('src'))
4361
.toContain('/core/preview?fileId=7')
4462
})
4563

4664
test('use dav paths for gifs so they are animated', () => {
4765
const src = '/Media/giffy.gif?fileId=7#mimetype=image%2Fgif&hasPreview=true'
48-
const wrapper = factory({src})
66+
const wrapper = factory({ src })
4967
expect(wrapper.vm.extension.options.currentDirectory).toBe('/current')
5068
expect(wrapper.find('.image__main').attributes('src'))
5169
.toContain("remote.php/dav/files/user1/current/Media/giffy.gif")
@@ -67,7 +85,7 @@ describe('Image View src attribute based on markdown', () => {
6785

6886
test('data urls are used as is', () => {
6987
const src = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAAl21bKAAAAA1BMVEUAAACnej3aAAAAAXRSTlMAQObYZgAAAApJREFUCNdjYAAAAAIAAeIhvDMAAAAASUVORK5CYII='
70-
const wrapper = factory({src})
88+
const wrapper = factory({ src })
7189
expect(wrapper.find('.image__main').attributes('src')).toBe(src)
7290
})
7391

0 commit comments

Comments
 (0)