From 26fadbdece24b0d4e4fab9493b5420f508a3b394 Mon Sep 17 00:00:00 2001 From: Joffrey JAFFEUX Date: Thu, 17 Nov 2022 23:44:05 +0100 Subject: [PATCH] FIX: hides user card button when current user can't DM (#19093) --- .../components/user-card-chat-button.hbs | 9 ++++- .../components/user-card-chat-button-test.js | 33 +++++++++++++++++++ 2 files changed, 41 insertions(+), 1 deletion(-) create mode 100644 plugins/chat/test/javascripts/components/user-card-chat-button-test.js diff --git a/plugins/chat/assets/javascripts/discourse/templates/components/user-card-chat-button.hbs b/plugins/chat/assets/javascripts/discourse/templates/components/user-card-chat-button.hbs index 8597a2fc182..ee34bdef396 100644 --- a/plugins/chat/assets/javascripts/discourse/templates/components/user-card-chat-button.hbs +++ b/plugins/chat/assets/javascripts/discourse/templates/components/user-card-chat-button.hbs @@ -1 +1,8 @@ - +{{#if this.chat.userCanDirectMessage}} + +{{/if}} diff --git a/plugins/chat/test/javascripts/components/user-card-chat-button-test.js b/plugins/chat/test/javascripts/components/user-card-chat-button-test.js new file mode 100644 index 00000000000..d585ae9fb82 --- /dev/null +++ b/plugins/chat/test/javascripts/components/user-card-chat-button-test.js @@ -0,0 +1,33 @@ +import { setupRenderingTest } from "discourse/tests/helpers/component-test"; +import hbs from "htmlbars-inline-precompile"; +import { render } from "@ember/test-helpers"; +import { module, test } from "qunit"; +import sinon from "sinon"; +import { exists } from "discourse/tests/helpers/qunit-helpers"; + +module("Discourse Chat | Component | user-card-chat-button", function (hooks) { + setupRenderingTest(hooks); + + test("when current user can send direct messages", async function (assert) { + sinon + .stub(this.owner.lookup("service:chat"), "userCanDirectMessage") + .value(true); + + await render(hbs``); + + assert.ok(exists(".user-card-chat-btn"), "it shows the chat button"); + }); + + test("when current user can’t send direct messages", async function (assert) { + sinon + .stub(this.owner.lookup("service:chat"), "userCanDirectMessage") + .value(false); + + await render(hbs``); + + assert.notOk( + exists(".user-card-chat-btn"), + "it doesn’t show the chat button" + ); + }); +});