From 2df237f4604fdcede0e213348652c4eff6118cba Mon Sep 17 00:00:00 2001 From: Erik Clarizio Date: Fri, 21 Oct 2016 08:57:59 -0700 Subject: [PATCH] Add javascript for controlling generic object delete functionality https://www.pivotaltracker.com/story/show/129980083 --- .../generic_object_definition_controller.js | 7 +++++ .../generic_object_subscription_service.js | 4 +++ ...neric_object_definition_controller_spec.js | 31 +++++++++++++++++-- ...eneric_object_subscription_service_spec.js | 10 ++++++ 4 files changed, 49 insertions(+), 3 deletions(-) diff --git a/app/assets/javascripts/controllers/generic_object/generic_object_definition_controller.js b/app/assets/javascripts/controllers/generic_object/generic_object_definition_controller.js index 11514b8904f..08cf63ece8f 100644 --- a/app/assets/javascripts/controllers/generic_object/generic_object_definition_controller.js +++ b/app/assets/javascripts/controllers/generic_object/generic_object_definition_controller.js @@ -7,6 +7,7 @@ ManageIQ.angular.app.controller('genericObjectDefinitionFormController', ['$http genericObjectSubscriptionService.subscribeToShowAddForm(showAddForm); genericObjectSubscriptionService.subscribeToShowEditForm(showEditForm); + genericObjectSubscriptionService.subscribeToDeleteGenericObject(deleteGenericObject); genericObjectSubscriptionService.subscribeToTreeClicks(showSelectedItem); genericObjectSubscriptionService.subscribeToRootTreeclicks(showAllItems); }; @@ -25,6 +26,12 @@ ManageIQ.angular.app.controller('genericObjectDefinitionFormController', ['$http sendDataWithRx({eventType: 'updateToolbarCount', countSelected: 0}); }; + var deleteGenericObject = function(_response) { + var data = {id: $scope.genericObjectDefinitionModel.id}; + + $http.post('delete', data).then(addedOrUpdatedGenericObject); + }; + var showAllItems = function(response) { $scope.genericObjectList = response; $scope.showSingleItem = false; diff --git a/app/assets/javascripts/services/generic_object_subscription_service.js b/app/assets/javascripts/services/generic_object_subscription_service.js index a65973d0da7..162ce375862 100644 --- a/app/assets/javascripts/services/generic_object_subscription_service.js +++ b/app/assets/javascripts/services/generic_object_subscription_service.js @@ -7,6 +7,10 @@ ManageIQ.angular.app.service('genericObjectSubscriptionService', ['subscriptionS subscriptionService.subscribeToEventType('showEditForm', callback); }; + this.subscribeToDeleteGenericObject = function(callback) { + subscriptionService.subscribeToEventType('deleteGenericObject', callback); + }; + this.subscribeToTreeClicks = function(callback) { subscriptionService.subscribeToEventType('treeClicked', callback); }; diff --git a/spec/javascripts/controllers/generic_object/generic_object_definition_controller_spec.js b/spec/javascripts/controllers/generic_object/generic_object_definition_controller_spec.js index 9cb2918c8ef..b64ca405de8 100644 --- a/spec/javascripts/controllers/generic_object/generic_object_definition_controller_spec.js +++ b/spec/javascripts/controllers/generic_object/generic_object_definition_controller_spec.js @@ -1,6 +1,6 @@ describe('genericObjectDefinitionFormController', function() { var $scope, $controller, $httpBackend, miqService, genericObjectSubscriptionService; - var showAddFormCallback, showEditFormCallback, treeClickCallback, rootTreeClickCallback; + var showAddFormCallback, showEditFormCallback, deleteGenericObjectCallback, treeClickCallback, rootTreeClickCallback; var treeData = {the: 'tree_data'}; beforeEach(module('ManageIQ')); @@ -24,6 +24,11 @@ describe('genericObjectDefinitionFormController', function() { showEditFormCallback = callback; } ); + spyOn(genericObjectSubscriptionService, 'subscribeToDeleteGenericObject').and.callFake( + function(callback) { + deleteGenericObjectCallback = callback; + } + ); spyOn(genericObjectSubscriptionService, 'subscribeToTreeClicks').and.callFake( function(callback) { treeClickCallback = callback; @@ -38,6 +43,7 @@ describe('genericObjectDefinitionFormController', function() { $httpBackend.whenGET('tree_data').respond({tree_data: JSON.stringify(treeData)}); $httpBackend.whenPOST('create', {id: '', name: 'name', description: 'description'}).respond({message: "success"}); $httpBackend.whenPOST('save', {id: 123, name: 'new name', description: 'description'}).respond({message: "success"}); + $httpBackend.whenPOST('delete', {id: 123}).respond({message: "success"}); $controller = _$controller_('genericObjectDefinitionFormController', { $scope: $scope, @@ -118,7 +124,7 @@ describe('genericObjectDefinitionFormController', function() { }); it('copies the model to prepare for the reset button', function() { - expect($scope.backupGenericObjectDefinitionModel).toEqual({name: '', description: ''}); + expect($scope.backupGenericObjectDefinitionModel).toEqual({id: '', name: '', description: ''}); }); it('sets the newRecord to false', function() { @@ -134,6 +140,24 @@ describe('genericObjectDefinitionFormController', function() { }); }); + describe('initialization deleteGenericObjectCallback', function() { + var response = 'does not matter'; + + beforeEach(function() { + $scope.genericObjectDefinitionModel = { + id: 123, + name: 'potato', + description: 'potato' + }; + }); + + it('posts to the delete action', function() { + $httpBackend.expectPOST('delete', {id: 123}).respond(200, ''); + deleteGenericObjectCallback(response); + $httpBackend.flush(); + }); + }); + describe('initialization treeClickCallback', function() { var response = {id: '123', name: 'name', description: 'description'}; @@ -234,7 +258,7 @@ describe('genericObjectDefinitionFormController', function() { }); it('makes a create http request', function() { - $httpBackend.expectPOST('create', {name: 'name', description: 'description'}).respond(200, ''); + $httpBackend.expectPOST('create', {id: '', name: 'name', description: 'description'}).respond(200, ''); $scope.addClicked(); $httpBackend.flush(); }); @@ -283,6 +307,7 @@ describe('genericObjectDefinitionFormController', function() { it('clears the form', function() { expect($scope.genericObjectDefinitionModel).toEqual({ + id: '', name: '', description: '' }); diff --git a/spec/javascripts/services/generic_object_subscription_service_spec.js b/spec/javascripts/services/generic_object_subscription_service_spec.js index d063e80d76e..24feb123460 100644 --- a/spec/javascripts/services/generic_object_subscription_service_spec.js +++ b/spec/javascripts/services/generic_object_subscription_service_spec.js @@ -32,6 +32,16 @@ describe('genericObjectSubscriptionService', function() { }); }); + describe('#subscribeToDeleteGenericObject', function() { + beforeEach(function() { + testService.subscribeToDeleteGenericObject(callback); + }); + + it('subscribes', function() { + expect(subscriptionService.subscribeToEventType).toHaveBeenCalledWith('deleteGenericObject', callback); + }); + }); + describe('#subscribeToTreeClicks', function() { beforeEach(function() { testService.subscribeToTreeClicks(callback);