The leak was introduced in #11722 and a test was added that relied on it in #14563 This PR fixes the leak (bookmarks-test), fixes the test that relied on it (fast-edit-test), and repleces some ad-hoc code with cloneJSON helper (other files)
70 lines
2.1 KiB
JavaScript
70 lines
2.1 KiB
JavaScript
import { module, test } from "qunit";
|
|
import UserBadge from "discourse/models/user-badge";
|
|
import badgeFixtures from "discourse/tests/fixtures/user-badges";
|
|
import { cloneJSON } from "discourse-common/lib/object";
|
|
|
|
module("Unit | Model | user-badge", function () {
|
|
test("createFromJson single", function (assert) {
|
|
const userBadge = UserBadge.createFromJson(
|
|
cloneJSON(badgeFixtures["/user_badges"])
|
|
);
|
|
assert.ok(!Array.isArray(userBadge), "does not return an array");
|
|
assert.strictEqual(
|
|
userBadge.get("badge.name"),
|
|
"Badge 2",
|
|
"badge reference is set"
|
|
);
|
|
assert.strictEqual(
|
|
userBadge.get("badge.badge_type.name"),
|
|
"Silver 2",
|
|
"badge.badge_type reference is set"
|
|
);
|
|
assert.strictEqual(
|
|
userBadge.get("granted_by.username"),
|
|
"anne3",
|
|
"granted_by reference is set"
|
|
);
|
|
});
|
|
|
|
test("createFromJson array", function (assert) {
|
|
const userBadges = UserBadge.createFromJson(
|
|
cloneJSON(badgeFixtures["/user-badges/:username"])
|
|
);
|
|
assert.ok(Array.isArray(userBadges), "returns an array");
|
|
assert.strictEqual(
|
|
userBadges[0].get("granted_by"),
|
|
undefined,
|
|
"granted_by reference is not set when null"
|
|
);
|
|
});
|
|
|
|
test("findByUsername", async function (assert) {
|
|
const badges = await UserBadge.findByUsername("anne3");
|
|
assert.ok(Array.isArray(badges), "returns an array");
|
|
});
|
|
|
|
test("findByBadgeId", async function (assert) {
|
|
const badges = await UserBadge.findByBadgeId(880);
|
|
assert.ok(Array.isArray(badges), "returns an array");
|
|
});
|
|
|
|
test("grant", async function (assert) {
|
|
const userBadge = await UserBadge.grant(1, "username");
|
|
assert.ok(!Array.isArray(userBadge), "does not return an array");
|
|
});
|
|
|
|
test("revoke", async function (assert) {
|
|
assert.expect(0);
|
|
const userBadge = UserBadge.create({ id: 1 });
|
|
await userBadge.revoke();
|
|
});
|
|
|
|
test("favorite", async function (assert) {
|
|
const userBadge = UserBadge.create({ id: 1 });
|
|
assert.notOk(userBadge.is_favorite);
|
|
|
|
await userBadge.favorite();
|
|
assert.ok(userBadge.is_favorite);
|
|
});
|
|
});
|