Skip to content

Commit

Permalink
recompute has-permissions helper when permissions service attributes …
Browse files Browse the repository at this point in the history
…change (#6473)
  • Loading branch information
meirish authored Mar 26, 2019
1 parent 579327d commit 43f06e0
Show file tree
Hide file tree
Showing 2 changed files with 41 additions and 0 deletions.
10 changes: 10 additions & 0 deletions ui/app/helpers/has-permission.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,18 @@
import Helper from '@ember/component/helper';
import { inject as service } from '@ember/service';
import { observer } from '@ember/object';

export default Helper.extend({
permissions: service(),
onPermissionsChange: observer(
'permissions.exactPaths',
'permissions.globPaths',
'permissions.canViewAll',
function() {
this.recompute();
}
),

compute([route], { routeParams, capability }) {
let permissions = this.permissions;
return permissions.hasNavPermission(route, routeParams, capability);
Expand Down
31 changes: 31 additions & 0 deletions ui/tests/integration/helpers/has-permission-test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
import { module, test } from 'qunit';
import { setupRenderingTest } from 'ember-qunit';
import { render } from '@ember/test-helpers';
import { run } from '@ember/runloop';
import hbs from 'htmlbars-inline-precompile';
import Service from '@ember/service';

const Permissions = Service.extend({
globPaths: null,
hasNavPermission() {
return this.globPaths ? true : false;
},
});

module('Integration | Helper | has-permission', function(hooks) {
setupRenderingTest(hooks);
hooks.beforeEach(function() {
this.owner.register('service:permissions', Permissions);
this.permissions = this.owner.lookup('service:permissions');
});

test('it renders', async function(assert) {
await render(hbs`{{#if (has-permission)}}Yes{{else}}No{{/if}}`);

assert.equal(this.element.textContent.trim(), 'No');
await run(() => {
this.permissions.set('globPaths', { 'test/': { capabilities: ['update'] } });
});
assert.equal(this.element.textContent.trim(), 'Yes', 'the helper re-computes when globPaths changes');
});
});

0 comments on commit 43f06e0

Please sign in to comment.