import GrantBadgeControllerMixin from 'discourse/mixins/grant-badge-controller'; import Badge from 'discourse/models/badge'; QUnit.module('mixin:grant-badge-controller', { before: function() { this.GrantBadgeController = Ember.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')); });