From 26ca2875ae6165839cdac864429688ad8dc10906 Mon Sep 17 00:00:00 2001 From: Lisa P Date: Wed, 16 Mar 2016 14:18:57 +0100 Subject: [PATCH] make it a util --- app/components/dashboard-row.js | 8 ++++---- app/components/repo-show-tools.js | 10 +++++----- app/mixins/permissions.js | 26 -------------------------- app/utils/permission.js | 26 ++++++++++++++++++++++++++ tests/unit/mixins/permissions-test.js | 12 ------------ tests/unit/utils/permission-test.js | 15 +++++++++++++++ 6 files changed, 50 insertions(+), 47 deletions(-) delete mode 100644 app/mixins/permissions.js create mode 100644 app/utils/permission.js delete mode 100644 tests/unit/mixins/permissions-test.js create mode 100644 tests/unit/utils/permission-test.js diff --git a/app/components/dashboard-row.js b/app/components/dashboard-row.js index 6478a72d..96e6c625 100644 --- a/app/components/dashboard-row.js +++ b/app/components/dashboard-row.js @@ -1,9 +1,9 @@ import Ember from 'ember'; import { githubCommit as githubCommitUrl } from 'travis/utils/urls'; import config from 'travis/config/environment'; -import Permissions from 'travis/mixins/permissions'; +import { hasAdminPermission, hasPushPermission } from 'travis/utils/permission'; -export default Ember.Component.extend(Permissions, { +export default Ember.Component.extend({ tagName: 'li', classNameBindings: ['repo.default_branch.last_build.state'], classNames: ['rows', 'rows--dashboard'], @@ -17,11 +17,11 @@ export default Ember.Component.extend(Permissions, { }.property('repo'), displayMenuTofu: function() { - return this.hasPushPermission(this.get('currentUser'), this.get('repo.id')); + return hasPushPermission(this.get('currentUser'), this.get('repo.id')); }, displayActivateLink: function() { - return this.hasAdminPermission(this.get('currentUser'), this.get('repo.id')); + return hasAdminPermission(this.get('currentUser'), this.get('repo.id')); }, actions: { diff --git a/app/components/repo-show-tools.js b/app/components/repo-show-tools.js index a5f8f016..741451bd 100644 --- a/app/components/repo-show-tools.js +++ b/app/components/repo-show-tools.js @@ -1,8 +1,8 @@ import Ember from 'ember'; import config from 'travis/config/environment'; -import Permissions from 'travis/mixins/permissions'; +import { hasPermission, hasPushPermission } from 'travis/utils/permission'; -export default Ember.Component.extend(Permissions, { +export default Ember.Component.extend({ popup: Ember.inject.service(), classNames: ['option-button'], classNameBindings: ['isOpen:display'], @@ -24,15 +24,15 @@ export default Ember.Component.extend(Permissions, { } }, displaySettingsLink: function() { - return this.hasPushPermission(this.get('currentUser'), this.get('repo.id')); + return hasPushPermission(this.get('currentUser'), this.get('repo.id')); }.property('currentUser.pushPermissions', 'repo.id'), displayCachesLink: function() { - return this.hasPushPermission(this.get('currentUser'), this.get('repo.id')) && config.endpoints.caches; + return hasPushPermission(this.get('currentUser'), this.get('repo.id')) && config.endpoints.caches; }.property('currentUser.pushPermissions', 'repo.id'), displayStatusImages: function() { - return this.hasPermission(this.get('currentUser'), this.get('repo.id')); + return hasPermission(this.get('currentUser'), this.get('repo.id')); }.property('currentUser.permissions', 'repo.id') }); diff --git a/app/mixins/permissions.js b/app/mixins/permissions.js deleted file mode 100644 index 44d3eb0b..00000000 --- a/app/mixins/permissions.js +++ /dev/null @@ -1,26 +0,0 @@ -import Ember from 'ember'; - -export default Ember.Mixin.create({ - - hasPermission: function(currentUser, repoId) { - var id = parseInt(repoId); - var permissions; - if (permissions = this.get('currentUser.permissions')) { - return permissions.contains(id); - } - }, - hasPushPermission: function(currentUser, repoId) { - var id = parseInt(repoId); - var permissions; - if (permissions = this.get('currentUser.pushPermissions')) { - return permissions.contains(id); - } - }, - hasAdminPermission: function(currentUser, repoId) { - var id = parseInt(repoId); - var permissions; - if (permissions = this.get('currentUser.adminPermissions')) { - return permissions.contains(id); - } - } -}); diff --git a/app/utils/permission.js b/app/utils/permission.js new file mode 100644 index 00000000..2d647b36 --- /dev/null +++ b/app/utils/permission.js @@ -0,0 +1,26 @@ + +var hasPermission = function(currentUser, repoId) { + var id = parseInt(repoId); + var permissions; + if (permissions = currentUser.get('permissions')) { + return permissions.contains(id); + } +}; + +var hasPushPermission = function(currentUser, repoId) { + var id = parseInt(repoId); + var permissions; + if (permissions = currentUser.get('pushPermissions')) { + return permissions.contains(id); + } +}; + +var hasAdminPermission = function(currentUser, repoId) { + var id = parseInt(repoId); + var permissions; + if (permissions = currentUser.get('adminPermissions')) { + return permissions.contains(id); + } +}; + +export {hasPermission, hasPushPermission, hasAdminPermission}; diff --git a/tests/unit/mixins/permissions-test.js b/tests/unit/mixins/permissions-test.js deleted file mode 100644 index 6428841f..00000000 --- a/tests/unit/mixins/permissions-test.js +++ /dev/null @@ -1,12 +0,0 @@ -import Ember from 'ember'; -import PermissionsMixin from 'travis/mixins/permissions'; -import { module, test } from 'qunit'; - -module('Unit | Mixin | permissions'); - -// Replace this with your real tests. -test('it works', function(assert) { - let PermissionsObject = Ember.Object.extend(PermissionsMixin); - let subject = PermissionsObject.create(); - assert.ok(subject); -}); diff --git a/tests/unit/utils/permission-test.js b/tests/unit/utils/permission-test.js new file mode 100644 index 00000000..aa4807d9 --- /dev/null +++ b/tests/unit/utils/permission-test.js @@ -0,0 +1,15 @@ +import Ember from 'ember'; +import { hasPermission } from 'travis/utils/permission'; +import { module, test } from 'qunit'; + +module('Unit | Utility | permission'); + + +test('it checks permissions', function(assert) { + + let user = Ember.Object.create({permissions: [1]}); + + assert.ok(hasPermission(user, 1)); + assert.ok(!hasPermission(user, 2)); + +});