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"
+ );
+ });
+});