We used many global functions to handle tests when they should be imported like other libraries in our application. This also gets us closer to the way Ember CLI prefers our tests to be laid out.
137 lines
4.0 KiB
JavaScript
137 lines
4.0 KiB
JavaScript
import { skip } from "qunit";
|
|
import { test } from "qunit";
|
|
import { acceptance } from "discourse/tests/helpers/qunit-helpers";
|
|
import DiscourseURL from "discourse/lib/url";
|
|
|
|
import pretender from "discourse/tests/helpers/create-pretender";
|
|
import userFixtures from "discourse/tests/fixtures/user-fixtures";
|
|
import User from "discourse/models/user";
|
|
|
|
acceptance("User Card - Show Local Time", {
|
|
loggedIn: true,
|
|
settings: { display_local_time_in_user_card: true },
|
|
});
|
|
|
|
skip("user card local time", async (assert) => {
|
|
User.current().changeTimezone("Australia/Brisbane");
|
|
let cardResponse = Object.assign({}, userFixtures["/u/eviltrout/card.json"]);
|
|
cardResponse.user.timezone = "Australia/Perth";
|
|
|
|
pretender.get("/u/eviltrout/card.json", () => [
|
|
200,
|
|
{ "Content-Type": "application/json" },
|
|
cardResponse,
|
|
]);
|
|
|
|
await visit("/t/internationalization-localization/280");
|
|
assert.ok(invisible(".user-card"), "user card is invisible by default");
|
|
await click("a[data-user-card=eviltrout]:first");
|
|
|
|
let expectedTime = moment
|
|
.tz("Australia/Brisbane")
|
|
.add(-2, "hours")
|
|
.format("h:mm a");
|
|
|
|
assert.ok(visible(".user-card"), "card should appear");
|
|
assert.equal(
|
|
find(".user-card .local-time").text().trim(),
|
|
expectedTime,
|
|
"user card contains the user's local time"
|
|
);
|
|
|
|
cardResponse = Object.assign({}, userFixtures["/u/charlie/card.json"]);
|
|
cardResponse.user.timezone = "America/New_York";
|
|
|
|
pretender.get("/u/charlie/card.json", () => [
|
|
200,
|
|
{ "Content-Type": "application/json" },
|
|
cardResponse,
|
|
]);
|
|
|
|
await click("a[data-user-card=charlie]:first");
|
|
|
|
expectedTime = moment
|
|
.tz("Australia/Brisbane")
|
|
.add(-14, "hours")
|
|
.format("h:mm a");
|
|
|
|
assert.equal(
|
|
find(".user-card .local-time").text().trim(),
|
|
expectedTime,
|
|
"opening another user card updates the local time in the card (no caching)"
|
|
);
|
|
});
|
|
|
|
test("user card local time - does not update timezone for another user", async (assert) => {
|
|
User.current().changeTimezone("Australia/Brisbane");
|
|
let cardResponse = Object.assign({}, userFixtures["/u/charlie/card.json"]);
|
|
delete cardResponse.user.timezone;
|
|
|
|
pretender.get("/u/charlie/card.json", () => [
|
|
200,
|
|
{ "Content-Type": "application/json" },
|
|
cardResponse,
|
|
]);
|
|
|
|
await visit("/t/internationalization-localization/280");
|
|
await click("a[data-user-card=charlie]:first");
|
|
|
|
assert.not(
|
|
exists(".user-card .local-time"),
|
|
"it does not show the local time if the user card returns a null/undefined timezone for another user"
|
|
);
|
|
});
|
|
|
|
acceptance("User Card", { loggedIn: true });
|
|
|
|
skip("user card", async (assert) => {
|
|
await visit("/t/internationalization-localization/280");
|
|
assert.ok(invisible(".user-card"), "user card is invisible by default");
|
|
|
|
await click("a[data-user-card=eviltrout]:first");
|
|
assert.ok(visible(".user-card"), "card should appear");
|
|
assert.equal(
|
|
find(".user-card .username").text().trim(),
|
|
"eviltrout",
|
|
"user card contains the data"
|
|
);
|
|
|
|
sandbox.stub(DiscourseURL, "routeTo");
|
|
await click(".card-content a.user-profile-link");
|
|
assert.ok(
|
|
DiscourseURL.routeTo.calledWith("/u/eviltrout"),
|
|
"it should navigate to the user profile"
|
|
);
|
|
|
|
await click("a[data-user-card=charlie]:first");
|
|
assert.ok(visible(".user-card"), "card should appear");
|
|
assert.equal(
|
|
find(".user-card .username").text().trim(),
|
|
"charlie",
|
|
"user card contains the data"
|
|
);
|
|
|
|
assert.ok(
|
|
!visible(".user-card .local-time"),
|
|
"local time with zone does not show by default"
|
|
);
|
|
|
|
await click(".card-content .compose-pm button");
|
|
assert.ok(
|
|
invisible(".user-card"),
|
|
"user card dismissed after hitting Message button"
|
|
);
|
|
|
|
const mention = find("a.mention");
|
|
const icon = document.createElement("span");
|
|
icon.classList.add("icon");
|
|
mention.append(icon);
|
|
await click("a.mention .icon");
|
|
assert.ok(visible(".user-card"), "card should appear");
|
|
assert.equal(
|
|
find(".user-card .username").text().trim(),
|
|
"eviltrout",
|
|
"user card contains the data"
|
|
);
|
|
});
|