discourse/plugins/chat/test/javascripts/components/chat-user-card-button-test.js
Joffrey JAFFEUX 1060e4573a
DEV: allows fabricators to use faker (#26555)
The complexity of the situation is that we don't want to load faker into production by default but fabricators and styleguide are available on production.

This is made possible through app/assets/javascripts/discourse/app/lib/load-faker.js which contains a function to ensure faker is loaded asynchronously (loadFaker) and another function to access the loaded faker (getLoadedFaker).

Note 1: this commit also refactors fabricators to have access to context and use faker where possible
Note 2: this commit moves automation to admin bundle

---------

Co-authored-by: David Taylor <david@taylorhq.com>
2024-04-08 21:00:09 +02:00

61 lines
1.9 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import { getOwner } from "@ember/application";
import { render } from "@ember/test-helpers";
import hbs from "htmlbars-inline-precompile";
import { module, test } from "qunit";
import sinon from "sinon";
import CoreFabricators from "discourse/lib/fabricators";
import { setupRenderingTest } from "discourse/tests/helpers/component-test";
module(
"Discourse Chat | Component | <Chat::DirectMessageButton />",
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);
this.user = new CoreFabricators(getOwner(this)).user();
await render(
hbs`<Chat::DirectMessageButton @user={{user}} @modal={{true}} />`
);
assert.dom(".chat-direct-message-btn").exists("it shows the chat button");
});
test("when current user cant send direct messages", async function (assert) {
sinon
.stub(this.owner.lookup("service:chat"), "userCanDirectMessage")
.value(false);
this.user = new CoreFabricators(getOwner(this)).user();
await render(
hbs`<Chat::DirectMessageButton @user={{user}} @modal={{true}} />`
);
assert
.dom(".chat-direct-message-btn")
.doesNotExist("it doesnt show the chat button");
});
test("when displayed user is suspended", async function (assert) {
sinon
.stub(this.owner.lookup("service:chat"), "userCanDirectMessage")
.value(true);
this.user = new CoreFabricators(getOwner(this)).user({
suspended_till: moment().add(1, "year").toDate(),
});
await render(
hbs`<Chat::DirectMessageButton @user={{user}} @modal={{true}} />`
);
assert
.dom(".chat-direct-message-btn")
.doesNotExist("it doesnt show the chat button");
});
}
);