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")); });