mirror of
https://github.com/discourse/discourse.git
synced 2024-12-02 22:23:55 +08:00
0a5f548635
As part of this move, we are also renaming `discourse-chat` to `chat`.
141 lines
4.0 KiB
JavaScript
141 lines
4.0 KiB
JavaScript
import componentTest, {
|
|
setupRenderingTest,
|
|
} from "discourse/tests/helpers/component-test";
|
|
import { exists, query } from "discourse/tests/helpers/qunit-helpers";
|
|
import hbs from "htmlbars-inline-precompile";
|
|
import fabricators from "../helpers/fabricators";
|
|
import I18n from "I18n";
|
|
import { Promise } from "rsvp";
|
|
import { fillIn, triggerEvent } from "@ember/test-helpers";
|
|
import { module } from "qunit";
|
|
|
|
function fetchMembersHandler(channelId, params = {}) {
|
|
if (params.offset === 50) {
|
|
return Promise.resolve([{ user: { id: 3, username: "clara" } }]);
|
|
}
|
|
|
|
if (params.offset === 100) {
|
|
return Promise.resolve([]);
|
|
}
|
|
|
|
if (!params.username) {
|
|
return Promise.resolve([
|
|
{ user: { id: 1, username: "jojo" } },
|
|
{ user: { id: 2, username: "bob" } },
|
|
]);
|
|
}
|
|
|
|
if (params.username === "jojo") {
|
|
return Promise.resolve([{ user: { id: 1, username: "jojo" } }]);
|
|
} else {
|
|
return Promise.resolve([]);
|
|
}
|
|
}
|
|
|
|
function setupState(context) {
|
|
context.set("fetchMembersHandler", fetchMembersHandler);
|
|
context.set("channel", fabricators.chatChannel());
|
|
context.channel.set("memberships_count", 2);
|
|
}
|
|
|
|
module(
|
|
"Discourse Chat | Component | chat-channel-members-view",
|
|
function (hooks) {
|
|
setupRenderingTest(hooks);
|
|
|
|
componentTest("no filter", {
|
|
template: hbs`{{chat-channel-members-view channel=channel fetchMembersHandler=fetchMembersHandler}}`,
|
|
|
|
beforeEach() {
|
|
this.set("fetchMembersHandler", fetchMembersHandler);
|
|
this.set("channel", fabricators.chatChannel());
|
|
this.channel.set("memberships_count", 2);
|
|
},
|
|
|
|
async test(assert) {
|
|
assert.ok(
|
|
exists(".channel-members-view__list-item[data-user-card='jojo']")
|
|
);
|
|
assert.ok(
|
|
exists(".channel-members-view__list-item[data-user-card='bob']")
|
|
);
|
|
},
|
|
});
|
|
|
|
componentTest("filter", {
|
|
template: hbs`{{chat-channel-members-view channel=channel fetchMembersHandler=fetchMembersHandler}}`,
|
|
|
|
beforeEach() {
|
|
setupState(this);
|
|
},
|
|
|
|
async test(assert) {
|
|
await fillIn(".channel-members-view__search-input", "jojo");
|
|
|
|
assert.ok(
|
|
exists(".channel-members-view__list-item[data-user-card='jojo']")
|
|
);
|
|
assert.notOk(
|
|
exists(".channel-members-view__list-item[data-user-card='bob']")
|
|
);
|
|
},
|
|
});
|
|
|
|
componentTest("filter with no results", {
|
|
template: hbs`{{chat-channel-members-view channel=channel fetchMembersHandler=fetchMembersHandler}}`,
|
|
|
|
beforeEach() {
|
|
setupState(this);
|
|
},
|
|
|
|
async test(assert) {
|
|
await fillIn(".channel-members-view__search-input", "cat");
|
|
|
|
assert.equal(
|
|
query(".channel-members-view__list").innerText.trim(),
|
|
I18n.t("chat.channel.no_memberships_found")
|
|
);
|
|
|
|
assert.notOk(
|
|
exists(".channel-members-view__list-item[data-user-card='jojo']")
|
|
);
|
|
assert.notOk(
|
|
exists(".channel-members-view__list-item[data-user-card='bob']")
|
|
);
|
|
},
|
|
});
|
|
|
|
componentTest("loading more", {
|
|
template: hbs`{{chat-channel-members-view channel=channel fetchMembersHandler=fetchMembersHandler}}`,
|
|
|
|
beforeEach() {
|
|
this.set("fetchMembersHandler", fetchMembersHandler);
|
|
this.set("channel", fabricators.chatChannel());
|
|
this.channel.set("memberships_count", 3);
|
|
},
|
|
|
|
async test(assert) {
|
|
await triggerEvent(".channel-members-view__list", "scroll");
|
|
|
|
["jojo", "bob", "clara"].forEach((username) => {
|
|
assert.ok(
|
|
exists(
|
|
`.channel-members-view__list-item[data-user-card='${username}']`
|
|
)
|
|
);
|
|
});
|
|
|
|
await triggerEvent(".channel-members-view__list", "scroll");
|
|
|
|
["jojo", "bob", "clara"].forEach((username) => {
|
|
assert.ok(
|
|
exists(
|
|
`.channel-members-view__list-item[data-user-card='${username}']`
|
|
)
|
|
);
|
|
});
|
|
},
|
|
});
|
|
}
|
|
);
|