diff --git a/addons/api/addon/models/target.js b/addons/api/addon/models/target.js index 99e1f3d16..db28c0afb 100644 --- a/addons/api/addon/models/target.js +++ b/addons/api/addon/models/target.js @@ -79,4 +79,14 @@ export default class TargetModel extends GeneratedTargetModel { }); } + /** + * Delete a single host set via the `delete-host-sets` method. + * @param {object} hostSet + * @param {object} options + * @return {Promise} + */ + deleteHostSet(hostSet, options) { + return this.deleteHostSets([hostSet.id], options); + } + } diff --git a/addons/api/tests/unit/models/target-test.js b/addons/api/tests/unit/models/target-test.js index 7d3aab836..80adb1274 100644 --- a/addons/api/tests/unit/models/target-test.js +++ b/addons/api/tests/unit/models/target-test.js @@ -122,4 +122,37 @@ module('Unit | Model | target', function (hooks) { const model = store.peekRecord('target', '123abc'); await model.deleteHostSets(['1', '3']); }); + + test('it has a `deleteHostSet` method that deletes a single host set using `deleteHostSets` method', async function (assert) { + assert.expect(1); + this.server.post('/v1/scopes/o_1/targets/123abc:delete-host-sets', (schema, request) => { + const body = JSON.parse(request.requestBody); + assert.deepEqual(body, { + host_set_ids: ['3'], + version: 1 + }); + }); + const store = this.owner.lookup('service:store'); + store.push({ + data: { + id: '123abc', + type: 'target', + attributes: { + name: 'Target', + description: 'Description', + host_sets: [ + { host_set_id: '1', host_catalog_id: '2' }, + { host_set_id: '3', host_catalog_id: '4' } + ], + version: 1, + scope: { + scope_id: 'o_1', + type: 'scope' + } + } + } + }); + const model = store.peekRecord('target', '123abc'); + await model.deleteHostSet({id: '3'}); + }); }); diff --git a/ui/core/app/routes/scopes/scope/projects/project/targets/target/host-sets.js b/ui/core/app/routes/scopes/scope/projects/project/targets/target/host-sets.js index 540638ebd..9b4ec2ce8 100644 --- a/ui/core/app/routes/scopes/scope/projects/project/targets/target/host-sets.js +++ b/ui/core/app/routes/scopes/scope/projects/project/targets/target/host-sets.js @@ -59,7 +59,7 @@ export default class ScopesScopeProjectsProjectTargetsTargetHostSetsRoute extend @action async delete(target, hostSet) { try { - await target.deleteHostSets([hostSet.id]); + await target.deleteHostSet(hostSet); this.refresh(); this.notify.success(this.intl.t('notify.delete-success')); this.transitionTo('scopes.scope.projects.project.targets.target.host-sets');