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

39 lines
1.8 KiB
JavaScript

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