discourse/test/javascripts/mixins/grant-badge-controller-test.js

83 lines
2.1 KiB
JavaScript

import Controller from "@ember/controller";
import GrantBadgeControllerMixin from "discourse/mixins/grant-badge-controller";
import Badge from "discourse/models/badge";
QUnit.module("mixin:grant-badge-controller", {
before: function() {
this.GrantBadgeController = Controller.extend(GrantBadgeControllerMixin);
this.badgeFirst = Badge.create({
id: 3,
name: "A Badge",
enabled: true,
manually_grantable: true
});
this.badgeMiddle = Badge.create({
id: 1,
name: "My Badge",
enabled: true,
manually_grantable: true
});
this.badgeLast = Badge.create({
id: 2,
name: "Zoo Badge",
enabled: true,
manually_grantable: true
});
this.badgeDisabled = Badge.create({
id: 4,
name: "Disabled Badge",
enabled: false,
manually_grantable: true
});
this.badgeAutomatic = Badge.create({
id: 5,
name: "Automatic Badge",
enabled: true,
manually_grantable: false
});
},
beforeEach: function() {
this.subject = this.GrantBadgeController.create({
userBadges: [],
allBadges: [
this.badgeLast,
this.badgeFirst,
this.badgeMiddle,
this.badgeDisabled,
this.badgeAutomatic
]
});
}
});
QUnit.test("grantableBadges", function(assert) {
const sortedNames = [
this.badgeFirst.name,
this.badgeMiddle.name,
this.badgeLast.name
];
const badgeNames = this.subject
.get("grantableBadges")
.map(badge => badge.name);
assert.not(
badgeNames.includes(this.badgeDisabled),
"excludes disabled badges"
);
assert.not(
badgeNames.includes(this.badgeAutomatic),
"excludes automatic badges"
);
assert.deepEqual(badgeNames, sortedNames, "sorts badges by name");
});
QUnit.test("selectedBadgeGrantable", function(assert) {
this.subject.set("selectedBadgeId", this.badgeDisabled.id);
assert.not(this.subject.get("selectedBadgeGrantable"));
this.subject.set("selectedBadgeId", this.badgeFirst.id);
assert.ok(this.subject.get("selectedBadgeGrantable"));
});