mirror of
https://github.com/discourse/discourse.git
synced 2025-06-03 02:48:28 +08:00
DEV: Modernize chat's component tests (#19577)
1. `test()` and `render()` instead of `componentTest()` 2. Angle brackets 3. `strictEqual()`/`true()`/`false()` assertions This removes all remaining uses of `componentTest` from core
This commit is contained in:
@ -1,13 +1,11 @@
|
||||
import componentTest, {
|
||||
setupRenderingTest,
|
||||
} from "discourse/tests/helpers/component-test";
|
||||
import { click, fillIn } from "@ember/test-helpers";
|
||||
import { setupRenderingTest } from "discourse/tests/helpers/component-test";
|
||||
import { click, fillIn, render } from "@ember/test-helpers";
|
||||
import hbs from "htmlbars-inline-precompile";
|
||||
import { exists, query } from "discourse/tests/helpers/qunit-helpers";
|
||||
import { createDirectMessageChannelDraft } from "discourse/plugins/chat/discourse/models/chat-channel";
|
||||
import { Promise } from "rsvp";
|
||||
import fabricators from "../helpers/fabricators";
|
||||
import { module } from "qunit";
|
||||
import { module, test } from "qunit";
|
||||
|
||||
function mockChat(context, options = {}) {
|
||||
const mock = context.container.lookup("service:chat");
|
||||
@ -25,143 +23,119 @@ function mockChat(context, options = {}) {
|
||||
module("Discourse Chat | Component | direct-message-creator", function (hooks) {
|
||||
setupRenderingTest(hooks);
|
||||
|
||||
componentTest("search", {
|
||||
template: hbs`{{direct-message-creator channel=channel chat=chat}}`,
|
||||
test("search", async function (assert) {
|
||||
this.set("chat", mockChat(this));
|
||||
this.set("channel", createDirectMessageChannelDraft());
|
||||
|
||||
beforeEach() {
|
||||
this.set("chat", mockChat(this));
|
||||
this.set("channel", createDirectMessageChannelDraft());
|
||||
},
|
||||
await render(
|
||||
hbs`<DirectMessageCreator @channel={{this.channel}} @chat={{this.chat}} />`
|
||||
);
|
||||
|
||||
async test(assert) {
|
||||
await fillIn(".filter-usernames", "hawk");
|
||||
assert.ok(exists("li.user[data-username='hawk']"));
|
||||
},
|
||||
await fillIn(".filter-usernames", "hawk");
|
||||
assert.true(exists("li.user[data-username='hawk']"));
|
||||
});
|
||||
|
||||
componentTest("select/deselect", {
|
||||
template: hbs`{{direct-message-creator channel=channel chat=chat}}`,
|
||||
test("select/deselect", async function (assert) {
|
||||
this.set("chat", mockChat(this));
|
||||
this.set("channel", createDirectMessageChannelDraft());
|
||||
|
||||
beforeEach() {
|
||||
this.set("chat", mockChat(this));
|
||||
this.set("channel", createDirectMessageChannelDraft());
|
||||
},
|
||||
await render(
|
||||
hbs`<DirectMessageCreator @channel={{this.channel}} @chat={{this.chat}} />`
|
||||
);
|
||||
assert.false(exists(".selected-user"));
|
||||
|
||||
async test(assert) {
|
||||
assert.notOk(exists(".selected-user"));
|
||||
await fillIn(".filter-usernames", "hawk");
|
||||
await click("li.user[data-username='hawk']");
|
||||
assert.true(exists(".selected-user"));
|
||||
|
||||
await fillIn(".filter-usernames", "hawk");
|
||||
await click("li.user[data-username='hawk']");
|
||||
|
||||
assert.ok(exists(".selected-user"));
|
||||
|
||||
await click(".selected-user");
|
||||
|
||||
assert.notOk(exists(".selected-user"));
|
||||
},
|
||||
await click(".selected-user");
|
||||
assert.false(exists(".selected-user"));
|
||||
});
|
||||
|
||||
componentTest("no search results", {
|
||||
template: hbs`{{direct-message-creator channel=channel chat=chat}}`,
|
||||
test("no search results", async function (assert) {
|
||||
this.set("chat", mockChat(this, { users: [] }));
|
||||
this.set("channel", createDirectMessageChannelDraft());
|
||||
|
||||
beforeEach() {
|
||||
this.set("chat", mockChat(this, { users: [] }));
|
||||
this.set("channel", createDirectMessageChannelDraft());
|
||||
},
|
||||
await render(
|
||||
hbs`<DirectMessageCreator @channel={{this.channel}} @chat={{this.chat}} />`
|
||||
);
|
||||
|
||||
async test(assert) {
|
||||
await fillIn(".filter-usernames", "bad cat");
|
||||
|
||||
assert.ok(exists(".no-results"));
|
||||
},
|
||||
await fillIn(".filter-usernames", "bad cat");
|
||||
assert.true(exists(".no-results"));
|
||||
});
|
||||
|
||||
componentTest("loads user on first load", {
|
||||
template: hbs`{{direct-message-creator channel=channel chat=chat}}`,
|
||||
test("loads user on first load", async function (assert) {
|
||||
this.set("chat", mockChat(this));
|
||||
this.set("channel", createDirectMessageChannelDraft());
|
||||
|
||||
beforeEach() {
|
||||
this.set("chat", mockChat(this));
|
||||
this.set("channel", createDirectMessageChannelDraft());
|
||||
},
|
||||
await render(
|
||||
hbs`<DirectMessageCreator @channel={{this.channel}} @chat={{this.chat}} />`
|
||||
);
|
||||
|
||||
async test(assert) {
|
||||
assert.ok(exists("li.user[data-username='hawk']"));
|
||||
assert.ok(exists("li.user[data-username='mark']"));
|
||||
},
|
||||
assert.true(exists("li.user[data-username='hawk']"));
|
||||
assert.true(exists("li.user[data-username='mark']"));
|
||||
});
|
||||
|
||||
componentTest("do not load more users after selection", {
|
||||
template: hbs`{{direct-message-creator channel=channel chat=chat}}`,
|
||||
test("do not load more users after selection", async function (assert) {
|
||||
this.set("chat", mockChat(this));
|
||||
this.set("channel", createDirectMessageChannelDraft());
|
||||
|
||||
beforeEach() {
|
||||
this.set("chat", mockChat(this));
|
||||
this.set("channel", createDirectMessageChannelDraft());
|
||||
},
|
||||
await render(
|
||||
hbs`<DirectMessageCreator @channel={{this.channel}} @chat={{this.chat}} />`
|
||||
);
|
||||
|
||||
async test(assert) {
|
||||
await click("li.user[data-username='hawk']");
|
||||
|
||||
assert.notOk(exists("li.user[data-username='mark']"));
|
||||
},
|
||||
await click("li.user[data-username='hawk']");
|
||||
assert.false(exists("li.user[data-username='mark']"));
|
||||
});
|
||||
|
||||
componentTest("apply is-focused to filter-area on focus input", {
|
||||
template: hbs`{{direct-message-creator channel=channel chat=chat}}<button class="test-blur">blur</button>`,
|
||||
test("apply is-focused to filter-area on focus input", async function (assert) {
|
||||
this.set("chat", mockChat(this));
|
||||
this.set("channel", createDirectMessageChannelDraft());
|
||||
|
||||
beforeEach() {
|
||||
this.set("chat", mockChat(this));
|
||||
this.set("channel", createDirectMessageChannelDraft());
|
||||
},
|
||||
await render(
|
||||
hbs`<DirectMessageCreator @channel={{this.channel}} @chat={{this.chat}} /><button class="test-blur">blur</button>`
|
||||
);
|
||||
|
||||
async test(assert) {
|
||||
await click(".filter-usernames");
|
||||
await click(".filter-usernames");
|
||||
assert.true(exists(".filter-area.is-focused"));
|
||||
|
||||
assert.ok(exists(".filter-area.is-focused"));
|
||||
|
||||
await click(".test-blur");
|
||||
|
||||
assert.notOk(exists(".filter-area.is-focused"));
|
||||
},
|
||||
await click(".test-blur");
|
||||
assert.false(exists(".filter-area.is-focused"));
|
||||
});
|
||||
|
||||
componentTest("state is reset on channel change", {
|
||||
template: hbs`{{direct-message-creator channel=channel chat=chat}}`,
|
||||
test("state is reset on channel change", async function (assert) {
|
||||
this.set("chat", mockChat(this));
|
||||
this.set("channel", createDirectMessageChannelDraft());
|
||||
|
||||
beforeEach() {
|
||||
this.set("chat", mockChat(this));
|
||||
this.set("channel", createDirectMessageChannelDraft());
|
||||
},
|
||||
await render(
|
||||
hbs`<DirectMessageCreator @channel={{this.channel}} @chat={{this.chat}} />`
|
||||
);
|
||||
|
||||
async test(assert) {
|
||||
await fillIn(".filter-usernames", "hawk");
|
||||
await fillIn(".filter-usernames", "hawk");
|
||||
assert.strictEqual(query(".filter-usernames").value, "hawk");
|
||||
|
||||
assert.equal(query(".filter-usernames").value, "hawk");
|
||||
this.set("channel", fabricators.chatChannel());
|
||||
this.set("channel", createDirectMessageChannelDraft());
|
||||
|
||||
this.set("channel", fabricators.chatChannel());
|
||||
this.set("channel", createDirectMessageChannelDraft());
|
||||
|
||||
assert.equal(query(".filter-usernames").value, "");
|
||||
assert.ok(exists(".filter-area.is-focused"));
|
||||
assert.ok(exists("li.user[data-username='hawk']"));
|
||||
},
|
||||
assert.strictEqual(query(".filter-usernames").value, "");
|
||||
assert.true(exists(".filter-area.is-focused"));
|
||||
assert.true(exists("li.user[data-username='hawk']"));
|
||||
});
|
||||
|
||||
componentTest("shows user status", {
|
||||
template: hbs`{{direct-message-creator channel=channel chat=chat}}`,
|
||||
test("shows user status", async function (assert) {
|
||||
const userWithStatus = {
|
||||
username: "hawk",
|
||||
status: { emoji: "tooth", description: "off to dentist" },
|
||||
};
|
||||
const chat = mockChat(this, { users: [userWithStatus] });
|
||||
this.set("chat", chat);
|
||||
this.set("channel", createDirectMessageChannelDraft());
|
||||
|
||||
beforeEach() {
|
||||
const userWithStatus = {
|
||||
username: "hawk",
|
||||
status: { emoji: "tooth", description: "off to dentist" },
|
||||
};
|
||||
const chat = mockChat(this, { users: [userWithStatus] });
|
||||
this.set("chat", chat);
|
||||
this.set("channel", createDirectMessageChannelDraft());
|
||||
},
|
||||
await render(
|
||||
hbs`<DirectMessageCreator @channel={{this.channel}} @chat={{this.chat}} />`
|
||||
);
|
||||
|
||||
async test(assert) {
|
||||
await fillIn(".filter-usernames", "hawk");
|
||||
assert.ok(exists(".user-status-message"));
|
||||
},
|
||||
await fillIn(".filter-usernames", "hawk");
|
||||
assert.true(exists(".user-status-message"));
|
||||
});
|
||||
});
|
||||
|
Reference in New Issue
Block a user