145 lines
4.0 KiB
JavaScript
145 lines
4.0 KiB
JavaScript
import {
|
|
acceptance,
|
|
exists,
|
|
publishToMessageBus,
|
|
query,
|
|
queryAll,
|
|
} from "discourse/tests/helpers/qunit-helpers";
|
|
import { visit } from "@ember/test-helpers";
|
|
import { test } from "qunit";
|
|
import TopicFixtures from "discourse/tests/fixtures/topic";
|
|
import { cloneJSON } from "discourse-common/lib/object";
|
|
|
|
acceptance("Topic - User Status", function (needs) {
|
|
const status = { emoji: "tooth", description: "off to dentist" };
|
|
|
|
needs.user();
|
|
needs.pretender((server, helper) => {
|
|
server.get("/t/299/1.json", () => {
|
|
const response = cloneJSON(TopicFixtures["/t/299/1.json"]);
|
|
response.post_stream.posts.forEach((post) => {
|
|
post.user_status = status;
|
|
|
|
// we need the poster's name to be different from username
|
|
// so when display_name_on_posts = true, both name and username will be shown:
|
|
post.name = "Evil T";
|
|
});
|
|
|
|
return helper.response(200, response);
|
|
});
|
|
});
|
|
|
|
test("shows user status next to avatar on posts", async function (assert) {
|
|
this.siteSettings.enable_user_status = true;
|
|
await visit("/t/-/299/1");
|
|
|
|
assert.equal(
|
|
queryAll(".topic-post .user-status-message").length,
|
|
3,
|
|
"all posts has user status"
|
|
);
|
|
});
|
|
|
|
test("shows user status next to avatar on posts when displaying names on posts is enabled", async function (assert) {
|
|
this.siteSettings.enable_user_status = true;
|
|
this.siteSettings.display_name_on_posts = true;
|
|
|
|
await visit("/t/-/299/1");
|
|
|
|
assert.equal(
|
|
queryAll(".topic-post .user-status-message").length,
|
|
3,
|
|
"all posts has user status"
|
|
);
|
|
});
|
|
});
|
|
|
|
acceptance("Topic - User Status - live updates", function (needs) {
|
|
const userId = 1;
|
|
const status = { emoji: "tooth", description: "off to dentist" };
|
|
|
|
needs.user();
|
|
needs.pretender((server, helper) => {
|
|
server.get("/t/299/1.json", () => {
|
|
const response = cloneJSON(TopicFixtures["/t/299/1.json"]);
|
|
response.post_stream.posts.forEach((post) => {
|
|
post.user_id = userId;
|
|
post.user_status = { emoji: "tooth", description: "off to dentist" };
|
|
});
|
|
|
|
return helper.response(200, response);
|
|
});
|
|
});
|
|
|
|
test("updating status", async function (assert) {
|
|
this.siteSettings.enable_user_status = true;
|
|
|
|
await visit("/t/-/299/1");
|
|
assert.equal(
|
|
queryAll(".topic-post .user-status-message").length,
|
|
3,
|
|
"all posts has user status"
|
|
);
|
|
assert.ok(
|
|
query(".topic-post .user-status-message .emoji").src.includes(
|
|
status.emoji
|
|
),
|
|
"status emoji is correct"
|
|
);
|
|
|
|
const newStatus = { emoji: "surfing_man", description: "surfing" };
|
|
await publishToMessageBus(`/user-status`, { [userId]: newStatus });
|
|
|
|
assert.equal(
|
|
queryAll(".topic-post .user-status-message").length,
|
|
3,
|
|
"all posts has user status"
|
|
);
|
|
assert.ok(
|
|
query(".topic-post .user-status-message .emoji").src.includes(
|
|
newStatus.emoji
|
|
),
|
|
"status emoji is correct"
|
|
);
|
|
});
|
|
|
|
test("removing status and setting again", async function (assert) {
|
|
this.siteSettings.enable_user_status = true;
|
|
|
|
await visit("/t/-/299/1");
|
|
assert.equal(
|
|
queryAll(".topic-post .user-status-message").length,
|
|
3,
|
|
"all posts has user status"
|
|
);
|
|
assert.ok(
|
|
query(".topic-post .user-status-message .emoji").src.includes(
|
|
status.emoji
|
|
),
|
|
"status emoji is correct"
|
|
);
|
|
|
|
await publishToMessageBus(`/user-status`, { [userId]: null });
|
|
|
|
assert.notOk(
|
|
exists(".topic-post .user-status-message"),
|
|
"status on all posts has disappeared"
|
|
);
|
|
|
|
const newStatus = { emoji: "surfing_man", description: "surfing" };
|
|
await publishToMessageBus(`/user-status`, { [userId]: newStatus });
|
|
|
|
assert.equal(
|
|
queryAll(".topic-post .user-status-message").length,
|
|
3,
|
|
"all posts have user status"
|
|
);
|
|
assert.ok(
|
|
query(".topic-post .user-status-message .emoji").src.includes(
|
|
newStatus.emoji
|
|
),
|
|
"status emoji is correct"
|
|
);
|
|
});
|
|
});
|