diff --git a/addons/mail/static/src/components/message/message.xml b/addons/mail/static/src/components/message/message.xml index 51689f70449..02a0c49e20c 100644 --- a/addons/mail/static/src/components/message/message.xml +++ b/addons/mail/static/src/components/message/message.xml @@ -190,7 +190,7 @@ @@ -199,7 +199,7 @@ diff --git a/addons/mail/static/src/components/message/message_tests.js b/addons/mail/static/src/components/message/message_tests.js index 63ee06a4a78..ce01dab0c7c 100644 --- a/addons/mail/static/src/components/message/message_tests.js +++ b/addons/mail/static/src/components/message/message_tests.js @@ -125,25 +125,6 @@ QUnit.test('basic rendering', async function (assert) { ); }); -QUnit.test('delete attachment linked to message', async function (assert) { - assert.expect(1); - - await this.start(); - const message = this.env.models['mail.message'].create({ - attachments: [['insert-and-replace', { - filename: "BLAH.jpg", - id: 10, - name: "BLAH", - }]], - author: [['insert', { id: 7, display_name: "Demo User" }]], - body: "

Test

", - id: 100, - }); - await this.createMessageComponent(message); - await afterNextRender(() => document.querySelector('.o_Attachment_asideItemUnlink').click()); - assert.notOk(this.env.models['mail.attachment'].find(attachment => attachment.id === 10)); -}); - QUnit.test('moderation: moderated channel with pending moderation message (author)', async function (assert) { assert.expect(1); @@ -701,6 +682,68 @@ QUnit.test('only show messaging seen indicator if authored by me, after last see ); }); +QUnit.test('allow attachment delete on authored message', async function (assert) { + assert.expect(3); + + await this.start(); + const message = this.env.models['mail.message'].create({ + attachments: [['insert-and-replace', { + filename: "BLAH.jpg", + id: 10, + name: "BLAH", + }]], + author: [['insert', { id: this.env.session.partner_id, display_name: "Me" }]], + body: "

Test

", + id: 100, + }); + await this.createMessageComponent(message); + + assert.containsOnce( + document.body, + '.o_Attachment', + "should have an attachment", + ); + assert.containsOnce( + document.body, + '.o_Attachment_asideItemUnlink', + "should have delete attachment button" + ); + + await afterNextRender(() => document.querySelector('.o_Attachment_asideItemUnlink').click()); + assert.containsNone( + document.body, + '.o_Attachment', + "should no longer have an attachment", + ); +}); +QUnit.test('prevent attachment delete on non-authored message', async function (assert) { + assert.expect(2); + + await this.start(); + const message = this.env.models['mail.message'].create({ + attachments: [['insert-and-replace', { + filename: "BLAH.jpg", + id: 10, + name: "BLAH", + }]], + author: [['insert', { id: 11, display_name: "Guy" }]], + body: "

Test

", + id: 100, + }); + await this.createMessageComponent(message); + + assert.containsOnce( + document.body, + '.o_Attachment', + "should have an attachment", + ); + assert.containsNone( + document.body, + '.o_Attachment_asideItemUnlink', + "delete attachment button should not be printed" + ); +}); + }); }); });