Uses `module()` instead of `discourseModule()`, native getters instead of `.get()`, fixes some assertions, uses the store instead of creating models directly
76 lines
2.3 KiB
JavaScript
76 lines
2.3 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";
|
|
import { setupTest } from "ember-qunit";
|
|
import { getOwner } from "discourse-common/lib/get-owner";
|
|
|
|
module("Unit | Model | user-badge", function (hooks) {
|
|
setupTest(hooks);
|
|
|
|
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.badge.name,
|
|
"Badge 2",
|
|
"badge reference is set"
|
|
);
|
|
assert.strictEqual(
|
|
userBadge.badge.badge_type.name,
|
|
"Silver 2",
|
|
"badge.badge_type reference is set"
|
|
);
|
|
assert.strictEqual(
|
|
userBadge.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].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 store = getOwner(this).lookup("service:store");
|
|
const userBadge = store.createRecord("user-badge", { id: 1 });
|
|
await userBadge.revoke();
|
|
});
|
|
|
|
test("favorite", async function (assert) {
|
|
const store = getOwner(this).lookup("service:store");
|
|
const userBadge = store.createRecord("user-badge", { id: 1 });
|
|
assert.notOk(userBadge.is_favorite);
|
|
|
|
await userBadge.favorite();
|
|
assert.ok(userBadge.is_favorite);
|
|
});
|
|
});
|