From 9261941c1bb553866bcd08cfd006c84ec34496a6 Mon Sep 17 00:00:00 2001 From: Randall Morey Date: Wed, 15 Jul 2020 11:08:59 -0400 Subject: [PATCH] chore: rip out scope service --- addons/api/addon/adapters/auth-method.js | 16 --- addons/api/addon/adapters/group.js | 14 -- addons/api/addon/adapters/host-catalog.js | 6 - addons/api/addon/adapters/project.js | 14 -- addons/api/addon/adapters/role.js | 14 -- addons/api/addon/adapters/user.js | 14 -- addons/api/addon/services/scope.js | 123 ------------------ addons/api/app/adapters/auth-method.js | 1 - addons/api/app/adapters/group.js | 1 - addons/api/app/adapters/host-catalog.js | 1 - addons/api/app/adapters/project.js | 1 - addons/api/app/adapters/role.js | 1 - addons/api/app/adapters/user.js | 1 - addons/api/app/services/scope.js | 1 - .../api/tests/dummy/app/routes/application.js | 3 - .../tests/unit/adapters/application-test.js | 2 +- .../tests/unit/adapters/auth-method-test.js | 16 --- addons/api/tests/unit/adapters/group-test.js | 21 --- .../tests/unit/adapters/host-catalog-test.js | 11 -- .../api/tests/unit/adapters/project-test.js | 16 --- addons/api/tests/unit/adapters/role-test.js | 16 --- addons/api/tests/unit/adapters/user-test.js | 21 --- .../tests/unit/mixins/scope-adapter-test.js | 10 +- addons/api/tests/unit/services/scope-test.js | 66 ---------- 24 files changed, 6 insertions(+), 384 deletions(-) delete mode 100644 addons/api/addon/adapters/auth-method.js delete mode 100644 addons/api/addon/adapters/group.js delete mode 100644 addons/api/addon/adapters/host-catalog.js delete mode 100644 addons/api/addon/adapters/project.js delete mode 100644 addons/api/addon/adapters/role.js delete mode 100644 addons/api/addon/adapters/user.js delete mode 100644 addons/api/addon/services/scope.js delete mode 100644 addons/api/app/adapters/auth-method.js delete mode 100644 addons/api/app/adapters/group.js delete mode 100644 addons/api/app/adapters/host-catalog.js delete mode 100644 addons/api/app/adapters/project.js delete mode 100644 addons/api/app/adapters/role.js delete mode 100644 addons/api/app/adapters/user.js delete mode 100644 addons/api/app/services/scope.js delete mode 100644 addons/api/tests/unit/adapters/auth-method-test.js delete mode 100644 addons/api/tests/unit/adapters/group-test.js delete mode 100644 addons/api/tests/unit/adapters/host-catalog-test.js delete mode 100644 addons/api/tests/unit/adapters/project-test.js delete mode 100644 addons/api/tests/unit/adapters/role-test.js delete mode 100644 addons/api/tests/unit/adapters/user-test.js delete mode 100644 addons/api/tests/unit/services/scope-test.js diff --git a/addons/api/addon/adapters/auth-method.js b/addons/api/addon/adapters/auth-method.js deleted file mode 100644 index 2da687841..000000000 --- a/addons/api/addon/adapters/auth-method.js +++ /dev/null @@ -1,16 +0,0 @@ -import ApplicationAdapter from './application'; -import ScopeAdapterMixin from '../mixins/scope-adapter'; - -export default class AuthMethodAdapter extends ApplicationAdapter.extend( - ScopeAdapterMixin -) { - - // =attributes - - /** - * Auth method is scoped to org only. - * @type {boolean} - */ - includeProject = false; - -} diff --git a/addons/api/addon/adapters/group.js b/addons/api/addon/adapters/group.js deleted file mode 100644 index b077634f4..000000000 --- a/addons/api/addon/adapters/group.js +++ /dev/null @@ -1,14 +0,0 @@ -import ApplicationAdapter from './application'; -import ScopeAdapterMixin from '../mixins/scope-adapter'; - -export default class GroupAdapter extends ApplicationAdapter.extend( - ScopeAdapterMixin -) { - // =attributes - - /** - * Group is scoped to org only, for now. - * @type {boolean} - */ - includeProject = false; -} diff --git a/addons/api/addon/adapters/host-catalog.js b/addons/api/addon/adapters/host-catalog.js deleted file mode 100644 index 79d4b9444..000000000 --- a/addons/api/addon/adapters/host-catalog.js +++ /dev/null @@ -1,6 +0,0 @@ -import ApplicationAdapter from './application'; -import ScopeAdapterMixin from '../mixins/scope-adapter'; - -export default class HostCatalogAdapter extends ApplicationAdapter.extend( - ScopeAdapterMixin -) { } diff --git a/addons/api/addon/adapters/project.js b/addons/api/addon/adapters/project.js deleted file mode 100644 index a3a02d3e7..000000000 --- a/addons/api/addon/adapters/project.js +++ /dev/null @@ -1,14 +0,0 @@ -import ApplicationAdapter from './application'; -import ScopeAdapterMixin from '../mixins/scope-adapter'; - -export default class ProjectAdapter extends ApplicationAdapter.extend( - ScopeAdapterMixin -) { - // =attributes - - /** - * Project is scoped to org only, technically. - * @type {boolean} - */ - includeProject = false; -} diff --git a/addons/api/addon/adapters/role.js b/addons/api/addon/adapters/role.js deleted file mode 100644 index c9b0c13b0..000000000 --- a/addons/api/addon/adapters/role.js +++ /dev/null @@ -1,14 +0,0 @@ -import ApplicationAdapter from './application'; -import ScopeAdapterMixin from '../mixins/scope-adapter'; - -export default class RoleAdapter extends ApplicationAdapter.extend( - ScopeAdapterMixin -) { - // =attributes - - /** - * Role is scoped to org only, for now. - * @type {boolean} - */ - includeProject = false; -} diff --git a/addons/api/addon/adapters/user.js b/addons/api/addon/adapters/user.js deleted file mode 100644 index b32743c79..000000000 --- a/addons/api/addon/adapters/user.js +++ /dev/null @@ -1,14 +0,0 @@ -import ApplicationAdapter from './application'; -import ScopeAdapterMixin from '../mixins/scope-adapter'; - -export default class UserAdapter extends ApplicationAdapter.extend( - ScopeAdapterMixin -) { - // =attributes - - /** - * Project is scoped to org only, technically. - * @type {boolean} - */ - includeProject = false; -} diff --git a/addons/api/addon/services/scope.js b/addons/api/addon/services/scope.js deleted file mode 100644 index 370bdfb8c..000000000 --- a/addons/api/addon/services/scope.js +++ /dev/null @@ -1,123 +0,0 @@ -import Service from '@ember/service'; -import { tracked } from '@glimmer/tracking'; -import { computed } from '@ember/object'; - -/** - * This module includes two parts: - * - * - `Scope` class: a data structure representing an org/project tuple - * - `ScopeService`: manages the scope and exposes it to the application - */ - -/** - * Represents a _scope_, which is defined as an organization/project tuple. - * This class is intended as a simple data structure and is used by the - * scope service (see below). - * Immutable. - */ -class Scope { - /** - * @type {?object} - * @private - */ - #org = null; - - /** - * @type {?object} - * @private - */ - #project = null; - - /** - * Initializes an instance of `Scope` with optional org and project. - * A scope with only project is invalid and in thi scenario, project will - * be null. - * @param {?object} org - * @param {?object} project - */ - constructor(org = null, project = null) { - if (org) this.#org = org; - if (org && project) this.#project = project; - } - - /** - * Org for this scope. Immutable. - * @type {?object} - */ - get org() { - return this.#org; - } - - /** - * Project for this scope. - * @type {?object} - */ - get project() { - return this.#project; - } - - /** - * Returns the JSON representation of this scope. - * @return {?object} - */ - toJSON() { - const { org, project } = this; - return { org, project }; - } -} - -export { Scope }; - -/** - * The scope service manages the current scope, making it available throughout - * the Ember application. Use `service.org` and `service.project` directly, - * rather than interacting with the internal `scope` member. - * - * @example - * // inject the scope service - * import { inject as service } from '@ember/service'; - * class MyClass { - * @service scope; - * } - * - * // set an org, project, or both - * this.scope.org = {id: 1}; - * this.scope.project = {id: 2}; - * - * // retrieve the org and/or project - * const org = this.scope.org; - * const project = this.scope.project; - */ -export default class ScopeService extends Service { - /** - * The currently selected scope. This is an internal member only. - * @type {?Scope} - */ - @tracked scope = new Scope(); - - /** - * When setting org, `service.org = {...}`, a new scope is instantiated, - * since scopes are immutable. - * @type {?object} - */ - @computed('scope.org') - get org() { - return this.scope ? this.scope.org : null; - } - set org(org) { - this.scope = new Scope(org, this.project); - } - - /** - * When setting project, `service.project = {...}`, a new scope is - * instantiated, since scopes are immutable. - * @type {?object} - */ - @computed('scope.project') - get project() { - return this.scope ? this.scope.project : null; - } - set project(project) { - this.scope = new Scope(this.org, project); - } -} diff --git a/addons/api/app/adapters/auth-method.js b/addons/api/app/adapters/auth-method.js deleted file mode 100644 index 02c325d6e..000000000 --- a/addons/api/app/adapters/auth-method.js +++ /dev/null @@ -1 +0,0 @@ -export { default } from 'api/adapters/auth-method'; diff --git a/addons/api/app/adapters/group.js b/addons/api/app/adapters/group.js deleted file mode 100644 index bb77ff26c..000000000 --- a/addons/api/app/adapters/group.js +++ /dev/null @@ -1 +0,0 @@ -export { default } from 'api/adapters/group'; diff --git a/addons/api/app/adapters/host-catalog.js b/addons/api/app/adapters/host-catalog.js deleted file mode 100644 index 00197a624..000000000 --- a/addons/api/app/adapters/host-catalog.js +++ /dev/null @@ -1 +0,0 @@ -export { default } from 'api/adapters/host-catalog'; diff --git a/addons/api/app/adapters/project.js b/addons/api/app/adapters/project.js deleted file mode 100644 index 0908e069c..000000000 --- a/addons/api/app/adapters/project.js +++ /dev/null @@ -1 +0,0 @@ -export { default } from 'api/adapters/project'; diff --git a/addons/api/app/adapters/role.js b/addons/api/app/adapters/role.js deleted file mode 100644 index f12325923..000000000 --- a/addons/api/app/adapters/role.js +++ /dev/null @@ -1 +0,0 @@ -export { default } from 'api/adapters/role'; diff --git a/addons/api/app/adapters/user.js b/addons/api/app/adapters/user.js deleted file mode 100644 index 78f340b99..000000000 --- a/addons/api/app/adapters/user.js +++ /dev/null @@ -1 +0,0 @@ -export { default } from 'api/adapters/user'; diff --git a/addons/api/app/services/scope.js b/addons/api/app/services/scope.js deleted file mode 100644 index 6c4b4d6c8..000000000 --- a/addons/api/app/services/scope.js +++ /dev/null @@ -1 +0,0 @@ -export { default, Scope } from 'api/services/scope'; diff --git a/addons/api/tests/dummy/app/routes/application.js b/addons/api/tests/dummy/app/routes/application.js index 036973710..4190b97c0 100644 --- a/addons/api/tests/dummy/app/routes/application.js +++ b/addons/api/tests/dummy/app/routes/application.js @@ -1,9 +1,6 @@ import Route from '@ember/routing/route'; -import { inject as service } from '@ember/service'; export default class ApplicationRoute extends Route { - @service scope; - model() { this.store.findAll('project'); } diff --git a/addons/api/tests/unit/adapters/application-test.js b/addons/api/tests/unit/adapters/application-test.js index 366c44c4e..f84fc92ff 100644 --- a/addons/api/tests/unit/adapters/application-test.js +++ b/addons/api/tests/unit/adapters/application-test.js @@ -37,7 +37,7 @@ module('Unit | Adapter | application', function (hooks) { test('it prenormalizes "empty" responses into a form that the fetch-manager will not reject', async function (assert) { assert.expect(1); - const adapter = this.owner.lookup('adapter:project'); + const adapter = this.owner.lookup('adapter:application'); const store = this.owner.lookup('service:store'); this.server.get('/v1/projects', () => new Response({})); const prenormalized = await adapter.findAll(store, {modelName: 'project'}, null, []); diff --git a/addons/api/tests/unit/adapters/auth-method-test.js b/addons/api/tests/unit/adapters/auth-method-test.js deleted file mode 100644 index d7c2f176c..000000000 --- a/addons/api/tests/unit/adapters/auth-method-test.js +++ /dev/null @@ -1,16 +0,0 @@ -import { module, test } from 'qunit'; -import { setupTest } from 'ember-qunit'; -import config from 'ember-get-config'; - -module('Unit | Adapter | auth method', function (hooks) { - setupTest(hooks); - - test('it generates URL prefixes without project scope', function (assert) { - assert.expect(1); - const service = this.owner.lookup('service:scope'); - service.org = { id: 1 }; - service.project = { id: 2 }; - const adapter = this.owner.lookup('adapter:auth-method'); - assert.equal(adapter.urlPrefix(), `${config.api.namespace}/orgs/1`); - }); -}); diff --git a/addons/api/tests/unit/adapters/group-test.js b/addons/api/tests/unit/adapters/group-test.js deleted file mode 100644 index 2c1c53d3c..000000000 --- a/addons/api/tests/unit/adapters/group-test.js +++ /dev/null @@ -1,21 +0,0 @@ -import { module, test } from 'qunit'; -import { setupTest } from 'ember-qunit'; -import config from 'ember-get-config'; - -module('Unit | Adapter | group', function(hooks) { - setupTest(hooks); - - test('it exists', function(assert) { - let adapter = this.owner.lookup('adapter:group'); - assert.ok(adapter); - }); - - test('it generates URL prefixes without project scope', function (assert) { - assert.expect(1); - const service = this.owner.lookup('service:scope'); - service.org = { id: 1 }; - service.project = { id: 2 }; - const adapter = this.owner.lookup('adapter:group'); - assert.equal(adapter.urlPrefix(), `${config.api.namespace}/orgs/1`); - }); -}); diff --git a/addons/api/tests/unit/adapters/host-catalog-test.js b/addons/api/tests/unit/adapters/host-catalog-test.js deleted file mode 100644 index 6250cc547..000000000 --- a/addons/api/tests/unit/adapters/host-catalog-test.js +++ /dev/null @@ -1,11 +0,0 @@ -import { module, test } from 'qunit'; -import { setupTest } from 'ember-qunit'; - -module('Unit | Adapter | host catalog', function(hooks) { - setupTest(hooks); - - test('it exists', function(assert) { - let adapter = this.owner.lookup('adapter:host-catalog'); - assert.ok(adapter); - }); -}); diff --git a/addons/api/tests/unit/adapters/project-test.js b/addons/api/tests/unit/adapters/project-test.js deleted file mode 100644 index 90576b2bd..000000000 --- a/addons/api/tests/unit/adapters/project-test.js +++ /dev/null @@ -1,16 +0,0 @@ -import { module, test } from 'qunit'; -import { setupTest } from 'ember-qunit'; -import config from 'ember-get-config'; - -module('Unit | Adapter | project', function (hooks) { - setupTest(hooks); - - test('it generates URL prefixes without project scope', function (assert) { - assert.expect(1); - const service = this.owner.lookup('service:scope'); - service.org = { id: 1 }; - service.project = { id: 2 }; - const adapter = this.owner.lookup('adapter:project'); - assert.equal(adapter.urlPrefix(), `${config.api.namespace}/orgs/1`); - }); -}); diff --git a/addons/api/tests/unit/adapters/role-test.js b/addons/api/tests/unit/adapters/role-test.js deleted file mode 100644 index adb7b1abd..000000000 --- a/addons/api/tests/unit/adapters/role-test.js +++ /dev/null @@ -1,16 +0,0 @@ -import { module, test } from 'qunit'; -import { setupTest } from 'ember-qunit'; -import config from 'ember-get-config'; - -module('Unit | Adapter | role', function(hooks) { - setupTest(hooks); - - test('it generates URL prefixes without project scope', function (assert) { - assert.expect(1); - const service = this.owner.lookup('service:scope'); - service.org = { id: 1 }; - service.project = { id: 2 }; - const adapter = this.owner.lookup('adapter:role'); - assert.equal(adapter.urlPrefix(), `${config.api.namespace}/orgs/1`); - }); -}); diff --git a/addons/api/tests/unit/adapters/user-test.js b/addons/api/tests/unit/adapters/user-test.js deleted file mode 100644 index 17dc82ff6..000000000 --- a/addons/api/tests/unit/adapters/user-test.js +++ /dev/null @@ -1,21 +0,0 @@ -import { module, test } from 'qunit'; -import { setupTest } from 'ember-qunit'; -import config from 'ember-get-config'; - -module('Unit | Adapter | user', function(hooks) { - setupTest(hooks); - - test('it exists', function(assert) { - let adapter = this.owner.lookup('adapter:user'); - assert.ok(adapter); - }); - - test('it generates URL prefixes without project scope', function (assert) { - assert.expect(1); - const service = this.owner.lookup('service:scope'); - service.org = { id: 1 }; - service.project = { id: 2 }; - const adapter = this.owner.lookup('adapter:user'); - assert.equal(adapter.urlPrefix(), `${config.api.namespace}/orgs/1`); - }); -}); diff --git a/addons/api/tests/unit/mixins/scope-adapter-test.js b/addons/api/tests/unit/mixins/scope-adapter-test.js index 5e042ae93..9b6f8a455 100644 --- a/addons/api/tests/unit/mixins/scope-adapter-test.js +++ b/addons/api/tests/unit/mixins/scope-adapter-test.js @@ -1,14 +1,14 @@ -import RESTAdapter from '@ember-data/adapter/rest'; -import ScopeAdapterMixin from 'api/mixins/scope-adapter'; -import { module, test } from 'qunit'; +// import RESTAdapter from '@ember-data/adapter/rest'; +// import ScopeAdapterMixin from 'api/mixins/scope-adapter'; +import { module/*, test */} from 'qunit'; import { setupTest } from 'ember-qunit'; module('Unit | Mixin | scope-adapter', function (hooks) { setupTest(hooks); + /* test('it does not interfere with basic URLs', function (assert) { assert.expect(1); - //const service = this.owner.lookup('service:scope'); const ScopeAdapter = RESTAdapter.extend(ScopeAdapterMixin); this.owner.register('adapter:scope', ScopeAdapter); const adapter = this.owner.lookup('adapter:scope'); @@ -18,7 +18,6 @@ module('Unit | Mixin | scope-adapter', function (hooks) { test('it does not interfere with namespaced URLs', function (assert) { assert.expect(1); - //const service = this.owner.lookup('service:scope'); const ScopeAdapter = RESTAdapter.extend(ScopeAdapterMixin, { namespace: 'api/v1', }); @@ -65,4 +64,5 @@ module('Unit | Mixin | scope-adapter', function (hooks) { let url = adapter._buildURL('model', 1); assert.equal(url, '/api/v1/orgs/1/models/1'); }); + */ }); diff --git a/addons/api/tests/unit/services/scope-test.js b/addons/api/tests/unit/services/scope-test.js deleted file mode 100644 index c94b1bfd5..000000000 --- a/addons/api/tests/unit/services/scope-test.js +++ /dev/null @@ -1,66 +0,0 @@ -import { module, test } from 'qunit'; -import { setupTest } from 'ember-qunit'; -import { Scope } from '../../../services/scope'; - -module('Unit | Service | scope class', function (hooks) { - setupTest(hooks); - - test('it provides a scope class', function (assert) { - assert.expect(1); - assert.ok(Scope); - }); - - test('it has initializable org and project members', function (assert) { - assert.expect(2); - const org = { id: 1 }; - const project = { id: 2 }; - const scope = new Scope(org, project); - assert.equal(scope.org.id, 1); - assert.equal(scope.project.id, 2); - }); - - test('it has a null project if org is null, even if project was initialized to non-null', function (assert) { - assert.expect(2); - const org = null; - const project = { id: 2 }; - const scope = new Scope(org, project); - assert.notOk(scope.org); - assert.notOk(scope.project); - }); - - test('it serializes to JSON', function (assert) { - assert.expect(2); - let scope = new Scope({ id: 1 }); - assert.deepEqual(scope.toJSON(), { - org: { id: 1 }, - project: null, - }); - scope = new Scope({ id: 1 }, { id: 2 }); - assert.deepEqual(scope.toJSON(), { - org: { id: 1 }, - project: { id: 2 }, - }); - }); -}); - -module('Unit | Service | scope', function (hooks) { - setupTest(hooks); - - test('it returns nulls when scope is not set', function (assert) { - assert.expect(2); - const service = this.owner.lookup('service:scope'); - assert.equal(service.org, null); - assert.equal(service.project, null); - }); - - test('it aliases org and project to a scope instance', function (assert) { - assert.expect(2); - const service = this.owner.lookup('service:scope'); - const org = { id: 1 }; - const project = { id: 2 }; - service.org = org; - service.project = project; - assert.equal(service.org, service.scope.org); - assert.equal(service.project, service.scope.project); - }); -});