From 35cfca1f3fc544fbb4f123a19e436a860aa22e3b Mon Sep 17 00:00:00 2001 From: jbrw Date: Tue, 27 Oct 2020 13:02:31 -0400 Subject: [PATCH] FIX: Hide delete button if user cannot delete and/or flag a post (#11045) * FIX: Hide delete button if user cannot delete and/or flag a post * Move canFlag conditional --- .../discourse/app/lib/transform-post.js | 1 + .../tests/integration/widgets/post-test.js | 32 +++++++++++++++++-- 2 files changed, 31 insertions(+), 2 deletions(-) diff --git a/app/assets/javascripts/discourse/app/lib/transform-post.js b/app/assets/javascripts/discourse/app/lib/transform-post.js index d6a03a9d169..58295dbeda0 100644 --- a/app/assets/javascripts/discourse/app/lib/transform-post.js +++ b/app/assets/javascripts/discourse/app/lib/transform-post.js @@ -258,6 +258,7 @@ export default function transformPost( postAtts.showFlagDelete = !postAtts.canDelete && postAtts.yours && + postAtts.canFlag && currentUser && !currentUser.staff; } else { diff --git a/app/assets/javascripts/discourse/tests/integration/widgets/post-test.js b/app/assets/javascripts/discourse/tests/integration/widgets/post-test.js index f24012e1750..41697e40120 100644 --- a/app/assets/javascripts/discourse/tests/integration/widgets/post-test.js +++ b/app/assets/javascripts/discourse/tests/integration/widgets/post-test.js @@ -309,10 +309,14 @@ widgetTest( this.set("args", { canDeleteTopic: false, showFlagDelete: true, + canFlag: true, }); }, - test(assert) { + async test(assert) { + await click(".show-more-actions"); + + assert.equal(find("button.create-flag").length, 1, `button is displayed`); assert.equal(find("button.delete").length, 1, `button is displayed`); assert.equal( find("button.delete").attr("title"), @@ -350,10 +354,11 @@ widgetTest("delete post button", { template: '{{mount-widget widget="post" args=args deletePost=(action "deletePost")}}', beforeEach() { - this.set("args", { canDelete: true }); + this.set("args", { canDelete: true, canFlag: true }); this.on("deletePost", () => (this.deletePostCalled = true)); }, async test(assert) { + await click(".show-more-actions"); await click("button.delete"); assert.ok(this.deletePostCalled, "it triggered the delete action"); }, @@ -369,6 +374,29 @@ widgetTest(`delete post button - can't delete`, { }, }); +widgetTest(`delete post button - can't delete, can't flag`, { + template: '{{mount-widget widget="post" args=args}}', + beforeEach() { + this.set("args", { + canDeleteTopic: false, + showFlagDelete: false, + canFlag: false, + }); + }, + test(assert) { + assert.equal( + find("button.delete").length, + 0, + `delete button is not displayed` + ); + assert.equal( + find("button.create-flag").length, + 0, + `flag button is not displayed` + ); + }, +}); + widgetTest("recover post button", { template: '{{mount-widget widget="post" args=args recoverPost=(action "recoverPost")}}',