github.com/anth0d/nomad@v0.0.0-20221214183521-ae3a0a2cad06/ui/tests/unit/abilities/recommendation-test.js (about) 1 /* eslint-disable ember/avoid-leaking-state-in-ember-objects */ 2 import { module, test } from 'qunit'; 3 import { setupTest } from 'ember-qunit'; 4 import Service from '@ember/service'; 5 import setupAbility from 'nomad-ui/tests/helpers/setup-ability'; 6 7 module('Unit | Ability | recommendation', function (hooks) { 8 setupTest(hooks); 9 setupAbility('recommendation')(hooks); 10 11 module( 12 'when the Dynamic Application Sizing feature is present', 13 function (hooks) { 14 hooks.beforeEach(function () { 15 const mockSystem = Service.extend({ 16 features: ['Dynamic Application Sizing'], 17 }); 18 19 this.owner.register('service:system', mockSystem); 20 }); 21 22 test('it permits accepting recommendations when ACLs are disabled', function (assert) { 23 const mockToken = Service.extend({ 24 aclEnabled: false, 25 }); 26 27 this.owner.register('service:token', mockToken); 28 29 assert.ok(this.ability.canAccept); 30 }); 31 32 test('it permits accepting recommendations for client tokens where any namespace has submit-job capabilities', function (assert) { 33 this.owner.lookup('service:system').set('activeNamespace', { 34 name: 'anotherNamespace', 35 }); 36 37 const mockToken = Service.extend({ 38 aclEnabled: true, 39 selfToken: { type: 'client' }, 40 selfTokenPolicies: [ 41 { 42 rulesJSON: { 43 Namespaces: [ 44 { 45 Name: 'aNamespace', 46 Capabilities: [], 47 }, 48 { 49 Name: 'bNamespace', 50 Capabilities: ['submit-job'], 51 }, 52 ], 53 }, 54 }, 55 ], 56 }); 57 58 this.owner.register('service:token', mockToken); 59 60 assert.ok(this.ability.canAccept); 61 }); 62 } 63 ); 64 65 module( 66 'when the Dynamic Application Sizing feature is not present', 67 function (hooks) { 68 hooks.beforeEach(function () { 69 const mockSystem = Service.extend({ 70 features: [], 71 }); 72 73 this.owner.register('service:system', mockSystem); 74 }); 75 76 test('it does not permit accepting recommendations regardless of ACL status', function (assert) { 77 const mockToken = Service.extend({ 78 aclEnabled: false, 79 }); 80 81 this.owner.register('service:token', mockToken); 82 83 assert.notOk(this.ability.canAccept); 84 }); 85 } 86 ); 87 });