Repository: ambari Updated Branches: refs/heads/trunk 688f6d46d -> 04fe46d74
AMBARI-15735 Check if persist data 'wizard-data' is removed upon exiting any wizard. (atkach) Project: http://git-wip-us.apache.org/repos/asf/ambari/repo Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/04fe46d7 Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/04fe46d7 Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/04fe46d7 Branch: refs/heads/trunk Commit: 04fe46d74bccd09f4a367193378e90bda09e7bba Parents: 688f6d4 Author: Andrii Tkach <[email protected]> Authored: Wed Apr 6 17:43:51 2016 +0300 Committer: Andrii Tkach <[email protected]> Committed: Thu Apr 7 11:51:07 2016 +0300 ---------------------------------------------------------------------- .../main/admin/highAvailability_controller.js | 2 +- ambari-web/app/controllers/wizard.js | 25 ++++++++ ambari-web/app/routes/add_host_routes.js | 20 +----- ambari-web/app/routes/add_kerberos_routes.js | 34 +--------- ambari-web/app/routes/add_service_routes.js | 17 +---- .../app/routes/high_availability_routes.js | 32 +--------- .../app/routes/ra_high_availability_routes.js | 37 +---------- ambari-web/app/routes/reassign_master_routes.js | 31 +--------- .../app/routes/rm_high_availability_routes.js | 51 ++------------- ambari-web/test/controllers/wizard_test.js | 65 ++++++++++++++++++++ 10 files changed, 108 insertions(+), 206 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ambari/blob/04fe46d7/ambari-web/app/controllers/main/admin/highAvailability_controller.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/controllers/main/admin/highAvailability_controller.js b/ambari-web/app/controllers/main/admin/highAvailability_controller.js index 1115a69..4cd50a6 100644 --- a/ambari-web/app/controllers/main/admin/highAvailability_controller.js +++ b/ambari-web/app/controllers/main/admin/highAvailability_controller.js @@ -18,7 +18,7 @@ var App = require('app'); -App.MainAdminHighAvailabilityController = Em.Controller.extend({ +App.MainAdminHighAvailabilityController = App.WizardController.extend({ name: 'mainAdminHighAvailabilityController', tag: null, http://git-wip-us.apache.org/repos/asf/ambari/blob/04fe46d7/ambari-web/app/controllers/wizard.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/controllers/wizard.js b/ambari-web/app/controllers/wizard.js index c349e55..27bef23 100644 --- a/ambari-web/app/controllers/wizard.js +++ b/ambari-web/app/controllers/wizard.js @@ -1348,5 +1348,30 @@ App.WizardController = Em.Controller.extend(App.LocalStorage, App.ThemesMappingM loadRecommendations: function () { this.set("content.recommendations", this.getDBProperty('recommendations')); + }, + + /** + * reset stored wizard data and reload App + * @param {App.WizardController} controller - wizard controller + * @param {string} route - preferable path to go after wizard finished + */ + resetOnClose: function(controller, route) { + App.router.get('wizardWatcherController').resetUser(); + controller.finish(); + App.router.get('updateController').set('isWorking', true); + App.clusterStatus.setClusterStatus({ + clusterName: App.get('clusterName'), + clusterState: 'DEFAULT', + localdb: App.db.data + }, + { + alwaysCallback: function () { + controller.get('popup').hide(); + App.router.transitionTo(route); + Em.run.next(function() { + location.reload(); + }); + } + }); } }); http://git-wip-us.apache.org/repos/asf/ambari/blob/04fe46d7/ambari-web/app/routes/add_host_routes.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/routes/add_host_routes.js b/ambari-web/app/routes/add_host_routes.js index 7c498a7..4b9f79a 100644 --- a/ambari-web/app/routes/add_host_routes.js +++ b/ambari-web/app/routes/add_host_routes.js @@ -22,23 +22,8 @@ module.exports = App.WizardRoute.extend({ route: '/host/add', leaveWizard: function (router, context) { - App.router.get('wizardWatcherController').resetUser(); var addHostController = router.get('addHostController'); - App.router.get('updateController').set('isWorking', true); - addHostController.finish(); - App.clusterStatus.setClusterStatus({ - clusterName: App.router.get('content.cluster.name'), - clusterState: 'DEFAULT', - localdb: App.db.data - }, { - alwaysCallback: function () { - context.hide(); - App.router.transitionTo('hosts.index'); - Em.run.next(function() { - location.reload(); - }); - } - }); + addHostController.resetOnClose(addHostController, 'hosts.index'); }, enter: function (router) { @@ -47,7 +32,7 @@ module.exports = App.WizardRoute.extend({ Ember.run.next(function () { var addHostController = router.get('addHostController'); App.router.get('updateController').set('isWorking', false); - App.ModalPopup.show({ + var popup = App.ModalPopup.show({ classNames: ['full-width-modal'], header: Em.I18n.t('hosts.add.header'), bodyClass: App.AddHostView.extend({ @@ -98,6 +83,7 @@ module.exports = App.WizardRoute.extend({ } } + addHostController.set('popup', popup); App.router.get('wizardWatcherController').setUser(addHostController.get('name')); router.transitionTo('step' + addHostController.get('currentStep')); }); http://git-wip-us.apache.org/repos/asf/ambari/blob/04fe46d7/ambari-web/app/routes/add_kerberos_routes.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/routes/add_kerberos_routes.js b/ambari-web/app/routes/add_kerberos_routes.js index 8393f39..074f821 100644 --- a/ambari-web/app/routes/add_kerberos_routes.js +++ b/ambari-web/app/routes/add_kerberos_routes.js @@ -67,14 +67,10 @@ module.exports = App.WizardRoute.extend({ }, exitWizard: function () { - var self = this; var kerberosProgressPageController = App.router.get('kerberosProgressPageController'); var controller = App.router.get('kerberosWizardController'); var exitPath = controller.getDBProperty('onClosePath') || 'adminKerberos.index'; - App.router.get('wizardWatcherController').resetUser(); controller.clearTasksData(); - controller.finish(); - App.get('router.updateController').set('isWorking', true); controller.discardChanges().then(function() { if (App.get('testMode')) { App.get('router').transitionTo('adminKerberos.index'); @@ -82,19 +78,7 @@ module.exports = App.WizardRoute.extend({ location.reload(); }); } - App.clusterStatus.setClusterStatus({ - clusterName: App.router.getClusterName(), - clusterState: 'DEFAULT', - localdb: App.db.data - }, { - alwaysCallback: function () { - self.hide(); - App.get('router').transitionTo(exitPath); - Em.run.next(function() { - location.reload(); - }); - } - }); + controller.resetOnClose(controller, exitPath); }); } }); @@ -364,21 +348,7 @@ module.exports = App.WizardRoute.extend({ back: Em.Router.transitionTo('step7'), next: function (router) { var controller = router.get('kerberosWizardController'); - controller.finish(); - App.clusterStatus.setClusterStatus({ - clusterName: App.get('router').getClusterName(), - clusterState: 'DEFAULT', - localdb: App.db.data - }, { - alwaysCallback: function () { - controller.get('popup').hide(); - App.get('router').transitionTo('adminKerberos.index'); - Em.run.next(function() { - location.reload(); - }); - } - }); - + controller.resetOnClose(controller, 'adminKerberos.index'); } }) }); http://git-wip-us.apache.org/repos/asf/ambari/blob/04fe46d7/ambari-web/app/routes/add_service_routes.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/routes/add_service_routes.js b/ambari-web/app/routes/add_service_routes.js index 5458847..2aaf1c1 100644 --- a/ambari-web/app/routes/add_service_routes.js +++ b/ambari-web/app/routes/add_service_routes.js @@ -45,7 +45,6 @@ module.exports = App.WizardRoute.extend({ App.router.transitionTo('main.services.index'); }, onClose: function () { - App.router.get('wizardWatcherController').resetUser(); this.set('showCloseButton', false); // prevent user to click "Close" many times App.router.get('updateController').set('isWorking', true); var self = this; @@ -53,21 +52,7 @@ module.exports = App.WizardRoute.extend({ App.router.get('updateController').updateServiceMetric(); }); var exitPath = addServiceController.getDBProperty('onClosePath') || 'main.services.index'; - addServiceController.finish(); - // We need to do recovery based on whether we are in Add Host or Installer wizard - App.clusterStatus.setClusterStatus({ - clusterName: App.router.get('content.cluster.name'), - clusterState: 'DEFAULT' - }, { - alwaysCallback: function () { - self.hide(); - App.router.transitionTo(exitPath); - Em.run.next(function() { - location.reload(); - }); - } - }); - + addServiceController.resetOnClose(addServiceController, exitPath); }, didInsertElement: function () { this.fitHeight(); http://git-wip-us.apache.org/repos/asf/ambari/blob/04fe46d7/ambari-web/app/routes/high_availability_routes.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/routes/high_availability_routes.js b/ambari-web/app/routes/high_availability_routes.js index 9042dbd..47bfc30 100644 --- a/ambari-web/app/routes/high_availability_routes.js +++ b/ambari-web/app/routes/high_availability_routes.js @@ -52,7 +52,6 @@ module.exports = App.WizardRoute.extend({ }.observes('App.router.highAvailabilityWizardController.currentStep'), onClose: function () { - App.router.get('wizardWatcherController').resetUser(); var self = this; var currStep = App.router.get('highAvailabilityWizardController.currentStep'); var highAvailabilityProgressPageController = App.router.get('highAvailabilityProgressPageController'); @@ -67,21 +66,7 @@ module.exports = App.WizardRoute.extend({ } else { var controller = App.router.get('highAvailabilityWizardController'); controller.clearTasksData(); - controller.finish(); - App.router.get('updateController').set('isWorking', true); - App.clusterStatus.setClusterStatus({ - clusterName: controller.get('content.cluster.name'), - clusterState: 'DEFAULT', - localdb: App.db.data - }, { - alwaysCallback: function () { - self.hide(); - App.router.transitionTo('main.services.index'); - Em.run.next(function() { - location.reload(); - }); - } - }); + controller.resetOnClose(controller, self, 'main.services.index'); } }, didInsertElement: function () { @@ -326,20 +311,7 @@ module.exports = App.WizardRoute.extend({ var proceed = function() { var controller = router.get('highAvailabilityWizardController'); controller.clearTasksData(); - controller.finish(); - App.clusterStatus.setClusterStatus({ - clusterName: controller.get('content.cluster.name'), - clusterState: 'DEFAULT', - localdb: App.db.data - }, { - alwaysCallback: function () { - controller.get('popup').hide(); - router.transitionTo('main.services.index'); - Em.run.next(function() { - location.reload(); - }); - } - }); + controller.resetOnClose(controller, 'main.services.index'); }; if (App.Service.find().someProperty('serviceName', 'HAWQ')) { App.showAlertPopup( http://git-wip-us.apache.org/repos/asf/ambari/blob/04fe46d7/ambari-web/app/routes/ra_high_availability_routes.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/routes/ra_high_availability_routes.js b/ambari-web/app/routes/ra_high_availability_routes.js index 54844c0..10bf3a0 100644 --- a/ambari-web/app/routes/ra_high_availability_routes.js +++ b/ambari-web/app/routes/ra_high_availability_routes.js @@ -41,44 +41,13 @@ module.exports = App.WizardRoute.extend({ onClose: function () { var rAHighAvailabilityWizardController = router.get('rAHighAvailabilityWizardController'), - currStep = rAHighAvailabilityWizardController.get('currentStep'), - self = this; - App.router.get('wizardWatcherController').resetUser(); + currStep = rAHighAvailabilityWizardController.get('currentStep'); if (parseInt(currStep) === 4) { App.showConfirmationPopup(function () { - router.get('updateController').set('isWorking', true); - rAHighAvailabilityWizardController.finish(); - App.clusterStatus.setClusterStatus({ - clusterName: App.router.getClusterName(), - clusterState: 'DEFAULT', - localdb: App.db.data - }, { - alwaysCallback: function () { - self.hide(); - router.transitionTo('main.services.index'); - Em.run.next(function() { - location.reload(); - }); - } - }); + rAHighAvailabilityWizardController.resetOnClose(rAHighAvailabilityWizardController, 'main.services.index'); }, Em.I18n.t('admin.ra_highAvailability.closePopup')); } else { - router.get('updateController').set('isWorking', true); - rAHighAvailabilityWizardController.finish(); - App.router.get('wizardWatcherController').resetUser(); - App.clusterStatus.setClusterStatus({ - clusterName: App.router.getClusterName(), - clusterState: 'DEFAULT', - localdb: App.db.data - }, { - alwaysCallback: function () { - self.hide(); - router.transitionTo('main.services.index'); - Em.run.next(function() { - location.reload(); - }); - } - }); + rAHighAvailabilityWizardController.resetOnClose(rAHighAvailabilityWizardController, 'main.services.index'); } }, didInsertElement: function () { http://git-wip-us.apache.org/repos/asf/ambari/blob/04fe46d7/ambari-web/app/routes/reassign_master_routes.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/routes/reassign_master_routes.js b/ambari-web/app/routes/reassign_master_routes.js index acc071d..8f57d8a 100644 --- a/ambari-web/app/routes/reassign_master_routes.js +++ b/ambari-web/app/routes/reassign_master_routes.js @@ -22,21 +22,8 @@ module.exports = App.WizardRoute.extend({ route: '/service/reassign', leaveWizard: function (router, context) { - App.router.get('wizardWatcherController').resetUser(); var reassignMasterController = router.get('reassignMasterController'); - App.router.get('updateController').set('isWorking', true); - reassignMasterController.finish(); - App.clusterStatus.setClusterStatus({ - clusterName: App.router.get('content.cluster.name'), - clusterState: 'DEFAULT', - localdb: App.db.data - }, {alwaysCallback: function () { - context.hide(); - router.transitionTo('main.index'); - Em.run.next(function() { - location.reload(); - }); - }}); + reassignMasterController.resetOnClose(reassignMasterController, 'main.index'); }, enter: function (router) { @@ -362,21 +349,7 @@ module.exports = App.WizardRoute.extend({ var controller = router.get('reassignMasterController'); var reassignMasterWizardStep7 = router.get('reassignMasterWizardStep7Controller'); if (!reassignMasterWizardStep7.get('isSubmitDisabled')) { - controller.finish(); - controller.get('popup').hide(); - App.clusterStatus.setClusterStatus({ - clusterName: router.get('reassignMasterController.content.cluster.name'), - clusterState: 'DEFAULT', - localdb: App.db.data - }, { - alwaysCallback: function () { - controller.get('popup').hide(); - router.transitionTo('main.index'); - Em.run.next(function() { - location.reload(); - }); - } - }); + controller.resetOnClose(controller, 'main.index'); } }, http://git-wip-us.apache.org/repos/asf/ambari/blob/04fe46d7/ambari-web/app/routes/rm_high_availability_routes.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/routes/rm_high_availability_routes.js b/ambari-web/app/routes/rm_high_availability_routes.js index e6f091f..8166650 100644 --- a/ambari-web/app/routes/rm_high_availability_routes.js +++ b/ambari-web/app/routes/rm_high_availability_routes.js @@ -39,43 +39,13 @@ module.exports = App.WizardRoute.extend({ onClose: function () { var rMHighAvailabilityWizardController = router.get('rMHighAvailabilityWizardController'), - currStep = rMHighAvailabilityWizardController.get('currentStep'), - self = this; - App.router.get('wizardWatcherController').resetUser(); + currStep = rMHighAvailabilityWizardController.get('currentStep'); if (parseInt(currStep) === 4) { App.showConfirmationPopup(function () { - router.get('updateController').set('isWorking', true); - rMHighAvailabilityWizardController.finish(); - App.clusterStatus.setClusterStatus({ - clusterName: App.router.getClusterName(), - clusterState: 'DEFAULT', - localdb: App.db.data - }, { - alwaysCallback: function () { - self.hide(); - router.transitionTo('main.services.index'); - Em.run.next(function() { - location.reload(); - }); - } - }); + rMHighAvailabilityWizardController.resetOnClose(rMHighAvailabilityWizardController, 'main.services.index'); }, Em.I18n.t('admin.rm_highAvailability.closePopup')); } else { - router.get('updateController').set('isWorking', true); - rMHighAvailabilityWizardController.finish(); - App.clusterStatus.setClusterStatus({ - clusterName: App.router.getClusterName(), - clusterState: 'DEFAULT', - localdb: App.db.data - }, { - alwaysCallback: function () { - self.hide(); - router.transitionTo('main.services.index'); - Em.run.next(function() { - location.reload(); - }); - } - }); + rMHighAvailabilityWizardController.resetOnClose(rMHighAvailabilityWizardController, 'main.services.index'); } }, didInsertElement: function () { @@ -197,20 +167,7 @@ module.exports = App.WizardRoute.extend({ }, next: function (router) { var controller = router.get('rMHighAvailabilityWizardController'); - controller.finish(); - App.clusterStatus.setClusterStatus({ - clusterName: controller.get('content.cluster.name'), - clusterState: 'DEFAULT', - localdb: App.db.data - }, { - alwaysCallback: function () { - controller.get('popup').hide(); - router.transitionTo('main.services.index'); - Em.run.next(function () { - location.reload(); - }); - } - }); + controller.resetOnClose(controller, 'main.services.index'); } }) http://git-wip-us.apache.org/repos/asf/ambari/blob/04fe46d7/ambari-web/test/controllers/wizard_test.js ---------------------------------------------------------------------- diff --git a/ambari-web/test/controllers/wizard_test.js b/ambari-web/test/controllers/wizard_test.js index 0264472..c056052 100644 --- a/ambari-web/test/controllers/wizard_test.js +++ b/ambari-web/test/controllers/wizard_test.js @@ -1639,4 +1639,69 @@ describe('App.WizardController', function () { }); + describe("#resetOnClose()", function () { + var ctrl = Em.Object.create({ + finish: Em.K, + popup: { + hide: Em.K + } + }); + + var mock = Em.Object.create({ + resetUser: Em.K + }); + + beforeEach(function () { + sinon.stub(ctrl, 'finish'); + sinon.stub(ctrl.popup, 'hide'); + sinon.stub(App.router, 'get').returns(mock); + sinon.stub(App.clusterStatus, 'setClusterStatus', function (arg1, arg2) { + arg2.alwaysCallback(); + }); + sinon.stub(Em.run, 'next'); + sinon.stub(mock, 'resetUser'); + sinon.stub(App.router, 'transitionTo'); + + c.resetOnClose(ctrl, 'path'); + }); + + afterEach(function () { + ctrl.finish.restore(); + ctrl.popup.hide.restore(); + App.router.get.restore(); + App.clusterStatus.setClusterStatus.restore(); + Em.run.next.restore(); + mock.resetUser.restore(); + App.router.transitionTo.restore(); + }); + + it("resetUser should be called", function () { + expect(mock.resetUser.calledOnce).to.be.true; + }); + + it("finish should be called", function () { + expect(ctrl.finish.calledOnce).to.be.true; + }); + + it("isWorking should be true", function () { + expect(mock.get('isWorking')).to.be.true; + }); + + it("App.clusterStatus.setClusterStatus should be called", function () { + expect(App.clusterStatus.setClusterStatus.calledOnce).to.be.true; + }); + + it("popup should be hidden", function () { + expect(ctrl.get('popup').hide.calledOnce).to.be.true; + }); + + it("App.router.transitionTo should be called", function () { + expect(App.router.transitionTo.calledOnce).to.be.true; + }); + + it("Em.run.next should be called", function () { + expect(Em.run.next.calledOnce).to.be.true; + }); + }); + });
