AMBARI-14356. hostWarningPopupBody_view_test.js unit test failing intermittently (onechiporenko)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/1901b395 Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/1901b395 Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/1901b395 Branch: refs/heads/trunk Commit: 1901b395c274a0ad3833b282164e54a7a1e74eb3 Parents: 17f7b71 Author: Oleg Nechiporenko <onechipore...@apache.org> Authored: Thu Dec 17 16:05:01 2015 +0200 Committer: Oleg Nechiporenko <onechipore...@apache.org> Committed: Fri Dec 18 11:36:17 2015 +0200 ---------------------------------------------------------------------- ambari-web/app/assets/test/tests.js | 1 + ambari-web/app/utils/ember_reopen.js | 10 + .../global/update_controller_test.js | 4 +- .../global/user_settings_controller_test.js | 76 +--- ambari-web/test/controllers/installer_test.js | 29 +- .../nameNode/step2_controller_test.js | 42 +- .../nameNode/step3_controller_test.js | 4 + .../progress_popup_controller_test.js | 4 + .../admin/kerberos/step6_controller_test.js | 14 +- .../controllers/main/admin/kerberos_test.js | 6 +- .../admin/stack_and_upgrade_controller_test.js | 391 ++++++++++--------- .../add_alert_definition_controller_test.js | 4 +- .../alerts/alert_instances_controller_test.js | 10 +- .../definitions_configs_controller_test.js | 24 +- .../heatmap_metrics/heatmap_metric_test.js | 2 +- .../dashboard/config_history_controller_test.js | 46 ++- .../main/host/add_controller_test.js | 54 ++- .../test/controllers/main/host/details_test.js | 158 ++++---- .../main/host/host_alerts_controller_test.js | 3 +- .../main/service/info/summary_test.js | 18 +- .../test/controllers/main/service/item_test.js | 21 +- .../manage_config_groups_controller_test.js | 200 +++++----- .../service/reassign/step2_controller_test.js | 4 +- .../service/reassign/step3_controller_test.js | 10 +- .../service/reassign/step4_controller_test.js | 118 ++++-- .../service/reassign/step6_controller_test.js | 2 +- .../widgets/create/step1_controller_test.js | 16 +- .../widgets/create/step2_controller_test.js | 43 +- .../widgets/create/step3_controller_test.js | 53 ++- .../test/controllers/wizard/step2_test.js | 6 +- .../test/controllers/wizard/step3_test.js | 76 +--- .../test/controllers/wizard/step6_test.js | 15 +- .../test/controllers/wizard/step7_test.js | 18 +- .../test/controllers/wizard/step9_test.js | 10 +- .../common/table_server_view_mixin_test.js | 8 +- .../test/mixins/common/widget_mixin_test.js | 201 ++++++---- ambari-web/test/models/host_component_test.js | 55 ++- ambari-web/test/models/host_test.js | 19 +- ambari-web/test/router_test.js | 6 +- ambari-web/test/utils/helper_test.js | 12 +- ambari-web/test/utils/load_timer_test.js | 4 +- .../test/views/common/chart/linear_time_test.js | 18 +- .../common/configs/config_history_flow_test.js | 76 +++- .../widgets/time_interval_spinner_view_test.js | 2 +- .../test/views/common/progress_bar_view_test.js | 2 +- .../test/views/common/quick_link_view_test.js | 279 ++++++------- .../nameNode/step3_view_test.js | 8 +- .../nameNode/step4_view_test.js | 2 +- .../nameNode/step6_view_test.js | 2 +- .../nameNode/step8_view_test.js | 2 +- .../highAvailability/progress_view_test.js | 4 +- .../failed_hosts_modal_view_test.js | 4 +- .../admin/stack_upgrade/services_view_test.js | 2 +- .../stack_upgrade/upgrade_group_view_test.js | 19 +- .../stack_upgrade/upgrade_task_view_test.js | 33 +- .../stack_upgrade/upgrade_wizard_view_test.js | 65 +-- .../admin/stack_upgrade/version_view_test.js | 67 ++-- ambari-web/test/views/main/admin_test.js | 2 +- .../select_definitions_popup_body_view_test.js | 48 ++- .../test/views/main/charts/heatmap_test.js | 4 +- .../main/dashboard/config_history_view_test.js | 65 +-- .../test/views/main/dashboard/widget_test.js | 18 +- .../test/views/main/dashboard/widgets_test.js | 54 ++- .../views/main/host/stack_versions_view_test.js | 6 +- ambari-web/test/views/wizard/step4_view_test.js | 2 +- ambari-web/test/views/wizard/step6_view_test.js | 21 +- 66 files changed, 1453 insertions(+), 1149 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ambari/blob/1901b395/ambari-web/app/assets/test/tests.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/assets/test/tests.js b/ambari-web/app/assets/test/tests.js index c44eda8..d13767f 100644 --- a/ambari-web/app/assets/test/tests.js +++ b/ambari-web/app/assets/test/tests.js @@ -46,6 +46,7 @@ var files = [ 'test/controllers/global/update_controller_test', 'test/controllers/global/configuration_controller_test', 'test/controllers/global/wizard_watcher_controller_test', + 'test/controllers/global/user_settings_controller_test', 'test/controllers/main/alert_definitions_controller_test', 'test/controllers/main/alerts/alert_definitions_actions_controller_test', 'test/controllers/main/alerts/definitions_configs_controller_test', http://git-wip-us.apache.org/repos/asf/ambari/blob/1901b395/ambari-web/app/utils/ember_reopen.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/utils/ember_reopen.js b/ambari-web/app/utils/ember_reopen.js index 29d14c8..0eefb97 100644 --- a/ambari-web/app/utils/ember_reopen.js +++ b/ambari-web/app/utils/ember_reopen.js @@ -128,6 +128,16 @@ Ember.sum = function (a, b) { }; /** + * Execute passed callback + * + * @param {Function} callback + * @returns {*} + */ +Ember.clb = function (callback) { + return callback(); +}; + +/** * */ Ember.RadioButton = Ember.Checkbox.extend({ http://git-wip-us.apache.org/repos/asf/ambari/blob/1901b395/ambari-web/test/controllers/global/update_controller_test.js ---------------------------------------------------------------------- diff --git a/ambari-web/test/controllers/global/update_controller_test.js b/ambari-web/test/controllers/global/update_controller_test.js index 482e58c..807d99d 100644 --- a/ambari-web/test/controllers/global/update_controller_test.js +++ b/ambari-web/test/controllers/global/update_controller_test.js @@ -255,7 +255,7 @@ describe('App.UpdateController', function () { App.get.restore(); controller.computeParameters.restore(); }); - it("", function () { + it("valid params are added", function () { expect(controller.addParamsToHostsUrl([], [], 'url')).to.equal('mock/clusters/mockurl¶ms¶ms'); }); }); @@ -292,7 +292,7 @@ describe('App.UpdateController', function () { afterEach(function () { App.hostsMapper.setMetrics.restore(); }); - it("", function () { + it("setMetrics called with valid arguments", function () { controller.loadHostsMetricSuccessCallback({}); expect(App.hostsMapper.setMetrics.calledWith({})).to.be.true; }); http://git-wip-us.apache.org/repos/asf/ambari/blob/1901b395/ambari-web/test/controllers/global/user_settings_controller_test.js ---------------------------------------------------------------------- diff --git a/ambari-web/test/controllers/global/user_settings_controller_test.js b/ambari-web/test/controllers/global/user_settings_controller_test.js index 13a73df..7c49645 100644 --- a/ambari-web/test/controllers/global/user_settings_controller_test.js +++ b/ambari-web/test/controllers/global/user_settings_controller_test.js @@ -22,81 +22,21 @@ var userSettingsController; describe('App.UserSettingsController', function () { beforeEach(function () { + sinon.stub(App.ajax, 'send', function () { + return {complete: Em.K} + }); userSettingsController = App.UserSettingsController.create(); }); + afterEach(function () { + App.ajax.send.restore(); + userSettingsController.destroy(); + }); + describe('#userSettingsKeys', function () { it('should not be empty', function () { expect(Object.keys(userSettingsController.get('userSettingsKeys'))).to.have.length.gt(0); }); }); - describe('#showSettingsPopup', function() { - var dataToShowRes = {}; - - beforeEach(function () { - sinon.stub(App.ModalPopup, 'show', function(dataToShow){ - dataToShowRes = dataToShow; - }); - sinon.stub(App, 'isAuthorized').returns(true); - var emulatorClass = function() {}; - emulatorClass.prototype.done = function(func) { - if (func) { - func(); - } - }; - var emulator = new emulatorClass(); - sinon.stub(userSettingsController, 'dataLoading').returns(emulator); - }); - afterEach(function () { - App.isAuthorized.restore(); - App.ModalPopup.show.restore(); - userSettingsController.dataLoading.restore(); - }); - it ('Should show settings popup', function() { - userSettingsController.showSettingsPopup(); - dataToShowRes = JSON.parse(JSON.stringify(dataToShowRes)); - expect(dataToShowRes).to.eql({ - "header": "User Settings", - "primary": "Save" - }); - }); - }); - - describe('#getUserPrefErrorCallback', function() { - it ('Should set currentPrefObject', function() { - applicationController.getUserPrefErrorCallback({status: 404}, {}, {}); - expect(applicationController.get('currentPrefObject')).to.be.true; - }); - }); - - describe('#getUserPrefSuccessCallback', function() { - it ('Should set currentPrefObject', function() { - applicationController.getUserPrefSuccessCallback({status: 200}, {}, {}); - expect(applicationController.get('currentPrefObject')).to.be.eql({status: 200}); - }); - }); - - describe('#updateUserPrefWithDefaultValues', function () { - - beforeEach(function () { - sinon.stub(userSettingsController, 'postUserPref', Em.K); - }); - - afterEach(function () { - userSettingsController.postUserPref.restore(); - }); - - it('should update user pref with default values', function () { - userSettingsController.updateUserPrefWithDefaultValues(null, true); - expect(userSettingsController.postUserPref.called).to.be.false; - }); - - it('should not update user pref with default values', function () { - userSettingsController.updateUserPrefWithDefaultValues(null, false); - expect(userSettingsController.postUserPref.called).to.be.true; - }); - - }); - }); \ No newline at end of file http://git-wip-us.apache.org/repos/asf/ambari/blob/1901b395/ambari-web/test/controllers/installer_test.js ---------------------------------------------------------------------- diff --git a/ambari-web/test/controllers/installer_test.js b/ambari-web/test/controllers/installer_test.js index 1f370d3..06d4ca7 100644 --- a/ambari-web/test/controllers/installer_test.js +++ b/ambari-web/test/controllers/installer_test.js @@ -26,6 +26,20 @@ describe('App.InstallerController', function () { var installerController = App.InstallerController.create(); + after(function () { + installerController.destroy(); + }); + + beforeEach(function () { + sinon.stub(App.ajax, 'send', function () { + return {complete: Em.K}; + }); + }); + + afterEach(function () { + App.ajax.send.restore(); + }); + describe('#init', function () { var c; beforeEach(function () { @@ -80,14 +94,7 @@ describe('App.InstallerController', function () { }); describe('#checkRepoURL', function() { - beforeEach(function () { - sinon.stub(App.ajax, 'send', function(data){ - return null; - }); - }); - afterEach(function () { - App.ajax.send.restore(); - }); + it ('Should reload installed stacks', function() { var stacks = Em.A([ Em.Object.create({ @@ -113,7 +120,7 @@ describe('App.InstallerController', function () { }) ]) }) - ]) + ]) }) ]); var wizard = Em.Object.create({ @@ -185,7 +192,7 @@ describe('App.InstallerController', function () { }) ]) }) - ]) + ]) }) ]); var resolve = false; @@ -267,7 +274,7 @@ describe('App.InstallerController', function () { }) ]) }) - ]) + ]) }) ]); var resolve = false; http://git-wip-us.apache.org/repos/asf/ambari/blob/1901b395/ambari-web/test/controllers/main/admin/highAvailability/nameNode/step2_controller_test.js ---------------------------------------------------------------------- diff --git a/ambari-web/test/controllers/main/admin/highAvailability/nameNode/step2_controller_test.js b/ambari-web/test/controllers/main/admin/highAvailability/nameNode/step2_controller_test.js index 731094f..570f45a 100644 --- a/ambari-web/test/controllers/main/admin/highAvailability/nameNode/step2_controller_test.js +++ b/ambari-web/test/controllers/main/admin/highAvailability/nameNode/step2_controller_test.js @@ -18,45 +18,21 @@ var App = require('app'); +function O (fl) { + return Em.Object.create({ + isInstalled: fl + }) +} + describe('App.HighAvailabilityWizardStep2Controller', function () { var controller = App.HighAvailabilityWizardStep2Controller.create(); describe('#sortMasterComponents', function () { it('should sort installed masters first', function() { - expect(controller.sortMasterComponents([ - Em.Object.create({ - isInstalled: true - }), - Em.Object.create({ - isInstalled: false - }), - Em.Object.create({ - isInstalled: true - }), - Em.Object.create({ - isInstalled: false - }), - Em.Object.create({ - isInstalled: true - }) - ])).to.eql([ - Em.Object.create({ - isInstalled: true - }), - Em.Object.create({ - isInstalled: true - }), - Em.Object.create({ - isInstalled: true - }), - Em.Object.create({ - isInstalled: false - }), - Em.Object.create({ - isInstalled: false - }) - ]); + var init = [O(true), O(false), O(true), O(false), O(true)]; + var sorted = [O(true), O(true), O(true), O(false), O(false)]; + expect(controller.sortMasterComponents(init)).to.eql(sorted); }); }); http://git-wip-us.apache.org/repos/asf/ambari/blob/1901b395/ambari-web/test/controllers/main/admin/highAvailability/nameNode/step3_controller_test.js ---------------------------------------------------------------------- diff --git a/ambari-web/test/controllers/main/admin/highAvailability/nameNode/step3_controller_test.js b/ambari-web/test/controllers/main/admin/highAvailability/nameNode/step3_controller_test.js index 7fbb4ca..aff4413 100644 --- a/ambari-web/test/controllers/main/admin/highAvailability/nameNode/step3_controller_test.js +++ b/ambari-web/test/controllers/main/admin/highAvailability/nameNode/step3_controller_test.js @@ -71,6 +71,10 @@ describe('App.HighAvailabilityWizardStep3Controller', function() { controller.set('serverConfigData', serverConfigData); }); + afterEach(function () { + controller.destroy(); + }); + describe('#removeConfigs', function() { var tests = [ http://git-wip-us.apache.org/repos/asf/ambari/blob/1901b395/ambari-web/test/controllers/main/admin/highAvailability/progress_popup_controller_test.js ---------------------------------------------------------------------- diff --git a/ambari-web/test/controllers/main/admin/highAvailability/progress_popup_controller_test.js b/ambari-web/test/controllers/main/admin/highAvailability/progress_popup_controller_test.js index 95512e9..bd8deb3 100644 --- a/ambari-web/test/controllers/main/admin/highAvailability/progress_popup_controller_test.js +++ b/ambari-web/test/controllers/main/admin/highAvailability/progress_popup_controller_test.js @@ -28,6 +28,10 @@ describe('App.HighAvailabilityProgressPopupController', function () { controller = App.HighAvailabilityProgressPopupController.create(); }); + after(function () { + controller.destroy(); + }); + describe('#startTaskPolling', function () { beforeEach(function () { http://git-wip-us.apache.org/repos/asf/ambari/blob/1901b395/ambari-web/test/controllers/main/admin/kerberos/step6_controller_test.js ---------------------------------------------------------------------- diff --git a/ambari-web/test/controllers/main/admin/kerberos/step6_controller_test.js b/ambari-web/test/controllers/main/admin/kerberos/step6_controller_test.js index 053f70e..780f896 100644 --- a/ambari-web/test/controllers/main/admin/kerberos/step6_controller_test.js +++ b/ambari-web/test/controllers/main/admin/kerberos/step6_controller_test.js @@ -19,8 +19,15 @@ var App = require('app'); describe('App.KerberosWizardStep6Controller', function() { + describe('#checkComponentsRemoval', function() { + afterEach(function () { + Em.tryInvoke(App.get, 'restore'); + Em.tryInvoke(App.Service.find, 'restore'); + Em.tryInvoke(App.HostComponent.find, 'restore'); + }); + var tests = [ { yarnInstalled: true, doesATSSupportKerberos: false, commands: ['stopServices', 'deleteATS'], ATSInstalled: true}, { yarnInstalled: false, doesATSSupportKerberos: true, commands: ['stopServices'], ATSInstalled: true}, @@ -33,12 +40,9 @@ describe('App.KerberosWizardStep6Controller', function() { it('YARN installed: {0}, ATS supported: {1} list of commands should be {2}'.format(test.yarnInstalled, test.doesATSSupportKerberos, test.commands.toString()), function () { var controller = App.KerberosWizardStep6Controller.create({ commands: ['stopServices'] }); sinon.stub(App, 'get').withArgs('doesATSSupportKerberos').returns(test.doesATSSupportKerberos); - sinon.stub(App.Service, 'find').returns(test.yarnInstalled ? [Em.Object.create({ serviceName: 'YARN'})] : []); - sinon.stub(App.HostComponent, 'find').returns(test.ATSInstalled ? [Em.Object.create({ componentName: 'APP_TIMELINE_SERVER'})] : []); + sinon.stub(App.Service, 'find').returns(test.yarnInstalled ? [Em.Object.create({serviceName: 'YARN'})] : []); + sinon.stub(App.HostComponent, 'find').returns(test.ATSInstalled ? [Em.Object.create({componentName: 'APP_TIMELINE_SERVER'})] : []); controller.checkComponentsRemoval(); - App.get.restore(); - App.Service.find.restore(); - App.HostComponent.find.restore(); expect(controller.get('commands').toArray()).to.eql(test.commands); }); }); http://git-wip-us.apache.org/repos/asf/ambari/blob/1901b395/ambari-web/test/controllers/main/admin/kerberos_test.js ---------------------------------------------------------------------- diff --git a/ambari-web/test/controllers/main/admin/kerberos_test.js b/ambari-web/test/controllers/main/admin/kerberos_test.js index 4b58069..e05dfdb 100644 --- a/ambari-web/test/controllers/main/admin/kerberos_test.js +++ b/ambari-web/test/controllers/main/admin/kerberos_test.js @@ -39,7 +39,7 @@ describe('App.MainAdminKerberosController', function() { Em.Object.create({ name: 'prop2', isEditable: true, serviceName: 'KERBEROS'}), Em.Object.create({ name: 'prop3', isEditable: true, serviceName: 'HDFS'}), Em.Object.create({ name: 'prop4', isEditable: true, serviceName: 'Cluster'}), - Em.Object.create({ name: 'prop5', isEditable: true, serviceName: 'SERVICE1'}), + Em.Object.create({ name: 'prop5', isEditable: true, serviceName: 'SERVICE1'}) ]); }); @@ -201,6 +201,7 @@ describe('App.MainAdminKerberosController', function() { App.ajax.send.restore(); mock.callback.restore(); controller.getSecurityType.restore(); + Em.tryInvoke(App.get, 'restore'); }); [ @@ -231,7 +232,6 @@ describe('App.MainAdminKerberosController', function() { controller.set('securityEnabled', test.securityEnabled); controller.set('kdc_type', test.kdc_type); controller.getKDCSessionState(mock.callback); - App.get.restore(); if (test.result) { expect(mock.callback.calledOnce).to.be.false; expect(App.ajax.send.calledOnce).to.be.true; @@ -255,6 +255,7 @@ describe('App.MainAdminKerberosController', function() { afterEach(function () { App.ajax.send.restore(); mock.callback.restore(); + Em.tryInvoke(App.get, 'restore'); }); [ @@ -285,7 +286,6 @@ describe('App.MainAdminKerberosController', function() { controller.set('securityEnabled', test.securityEnabled); controller.set('kdc_type', test.kdc_type); controller.getSecurityType(mock.callback); - App.get.restore(); if (test.result) { expect(mock.callback.calledOnce).to.be.false; expect(App.ajax.send.calledOnce).to.be.true; http://git-wip-us.apache.org/repos/asf/ambari/blob/1901b395/ambari-web/test/controllers/main/admin/stack_and_upgrade_controller_test.js ---------------------------------------------------------------------- diff --git a/ambari-web/test/controllers/main/admin/stack_and_upgrade_controller_test.js b/ambari-web/test/controllers/main/admin/stack_and_upgrade_controller_test.js index 630d0b2..392f899 100644 --- a/ambari-web/test/controllers/main/admin/stack_and_upgrade_controller_test.js +++ b/ambari-web/test/controllers/main/admin/stack_and_upgrade_controller_test.js @@ -28,16 +28,25 @@ describe('App.MainAdminStackAndUpgradeController', function() { setDBProperty: Em.K }); + before(function () { + sinon.stub(App.router, 'get').withArgs('clusterController.isLoaded').returns(false); + }); + + after(function () { + App.router.get.restore(); + controller.destroy(); + }); + describe("#realRepoUrl", function() { before(function () { this.mock = sinon.stub(App, 'get'); + this.mock.withArgs('apiPrefix').returns('apiPrefix') + .withArgs('stackVersionURL').returns('stackVersionURL'); }); after(function () { this.mock.restore(); }); - it("", function() { - this.mock.withArgs('apiPrefix').returns('apiPrefix'); - this.mock.withArgs('stackVersionURL').returns('stackVersionURL'); + it("should be valid", function() { controller.propertyDidChange('realRepoUrl'); expect(controller.get('realRepoUrl')).to.equal('apiPrefixstackVersionURL/compatible_repository_versions?fields=*,operating_systems/*,operating_systems/repositories/*'); }); @@ -46,13 +55,13 @@ describe('App.MainAdminStackAndUpgradeController', function() { describe("#realStackUrl", function() { before(function () { this.mock = sinon.stub(App, 'get'); + this.mock.withArgs('apiPrefix').returns('apiPrefix') + .withArgs('clusterName').returns('clusterName'); }); after(function () { this.mock.restore(); }); - it("", function() { - this.mock.withArgs('apiPrefix').returns('apiPrefix'); - this.mock.withArgs('clusterName').returns('clusterName'); + it("should be valid", function() { controller.propertyDidChange('realStackUrl'); expect(controller.get('realStackUrl')).to.equal('apiPrefix/clusters/clusterName/stack_versions?fields=*,repository_versions/*,repository_versions/operating_systems/repositories/*'); }); @@ -61,13 +70,13 @@ describe('App.MainAdminStackAndUpgradeController', function() { describe("#realUpdateUrl", function() { before(function () { this.mock = sinon.stub(App, 'get'); + this.mock.withArgs('apiPrefix').returns('apiPrefix') + .withArgs('clusterName').returns('clusterName'); }); after(function () { this.mock.restore(); }); - it("", function() { - this.mock.withArgs('apiPrefix').returns('apiPrefix'); - this.mock.withArgs('clusterName').returns('clusterName'); + it("realUpdateUrl is valid", function() { controller.propertyDidChange('realUpdateUrl'); expect(controller.get('realUpdateUrl')).to.equal('apiPrefix/clusters/clusterName/stack_versions?fields=ClusterStackVersions/*'); }); @@ -87,15 +96,15 @@ describe('App.MainAdminStackAndUpgradeController', function() { }); describe("#load()", function() { - before(function(){ + beforeEach(function(){ sinon.stub(controller, 'loadUpgradeData').returns({ - done: function(callback) {callback();} + done: Em.clb }); sinon.stub(controller, 'loadStackVersionsToModel').returns({ - done: function(callback) {callback();} + done: Em.clb }); sinon.stub(controller, 'loadRepoVersionsToModel').returns({ - done: function(callback) {callback();} + done: Em.clb }); sinon.stub(App.StackVersion, 'find').returns([Em.Object.create({ state: 'CURRENT', @@ -104,18 +113,24 @@ describe('App.MainAdminStackAndUpgradeController', function() { displayName: 'HDP-2.2' } })]); + controller.load(); }); - after(function(){ + afterEach(function(){ controller.loadUpgradeData.restore(); controller.loadStackVersionsToModel.restore(); controller.loadRepoVersionsToModel.restore(); App.StackVersion.find.restore(); }); - it("", function() { - controller.load(); + it("loadUpgradeData called with valid arguments", function() { expect(controller.loadUpgradeData.calledWith(true)).to.be.true; + }); + it('loadStackVersionsToModel called with valid arguments', function () { expect(controller.loadStackVersionsToModel.calledWith(true)).to.be.true; + }); + it('loadRepoVersionsToModel called once', function () { expect(controller.loadRepoVersionsToModel.calledOnce).to.be.true; + }); + it('currentVersion is corrent', function () { expect(controller.get('currentVersion')).to.eql({ "repository_version": "2.2", "repository_name": "HDP-2.2" @@ -524,11 +539,12 @@ describe('App.MainAdminStackAndUpgradeController', function() { value: '2.2', label: 'HDP-2.2' }); - expect(App.ajax.send.getCall(0).args[0].data).to.eql({"value": '2.2', "label": 'HDP-2.2'}); - expect(App.ajax.send.getCall(0).args[0].name).to.eql('admin.upgrade.start'); - expect(App.ajax.send.getCall(0).args[0].sender).to.eql(controller); - expect(App.ajax.send.getCall(0).args[0].success).to.eql('upgradeSuccessCallback'); - expect(App.ajax.send.getCall(0).args[0].callback).to.be.called; + var callArgs = App.ajax.send.getCall(0).args[0]; + expect(callArgs.data).to.eql({"value": '2.2', "label": 'HDP-2.2'}); + expect(callArgs.name).to.eql('admin.upgrade.start'); + expect(callArgs.sender).to.eql(controller); + expect(callArgs.success).to.eql('upgradeSuccessCallback'); + expect(callArgs.callback).to.be.called; expect(controller.setDBProperty.calledWith('currentVersion', { repository_version: '2.2' })).to.be.true; @@ -580,105 +596,112 @@ describe('App.MainAdminStackAndUpgradeController', function() { controller.updateUpgradeData({}); expect(controller.initUpgradeData.calledWith({})).to.be.true; }); - it("update loaded data", function() { - var oldData = Em.Object.create({ - upgradeGroups: [ - Em.Object.create({ - group_id: 1, - upgradeItems: [ - Em.Object.create({ - stage_id: 1 - }) - ] - }), - Em.Object.create({ - group_id: 2, - upgradeItems: [ - Em.Object.create({ - stage_id: 2 - }), - Em.Object.create({ - stage_id: 3 - }) - ] - }) - ] - }); - var newData = { - Upgrade: { - request_id: 1 - }, - upgrade_groups: [ - { - UpgradeGroup: { + + describe('upgradeData exists', function () { + + var groups; + + beforeEach(function() { + var oldData = Em.Object.create({ + upgradeGroups: [ + Em.Object.create({ group_id: 1, - status: 'COMPLETED', - progress_percent: 100, - completed_task_count: 3 - }, - upgrade_items: [ - { - UpgradeItem: { - stage_id: 1, - status: 'COMPLETED', - progress_percent: 100 - } - } - ] - }, - { - UpgradeGroup: { + upgradeItems: [ + Em.Object.create({ + stage_id: 1 + }) + ] + }), + Em.Object.create({ group_id: 2, - status: 'ABORTED', - progress_percent: 50, - completed_task_count: 1 - }, - upgrade_items: [ - { - UpgradeItem: { - stage_id: 2, - status: 'ABORTED', - progress_percent: 99 + upgradeItems: [ + Em.Object.create({ + stage_id: 2 + }), + Em.Object.create({ + stage_id: 3 + }) + ] + }) + ] + }); + var newData = { + Upgrade: { + request_id: 1 + }, + upgrade_groups: [ + { + UpgradeGroup: { + group_id: 1, + status: 'COMPLETED', + progress_percent: 100, + completed_task_count: 3 + }, + upgrade_items: [ + { + UpgradeItem: { + stage_id: 1, + status: 'COMPLETED', + progress_percent: 100 + } } + ] + }, + { + UpgradeGroup: { + group_id: 2, + status: 'ABORTED', + progress_percent: 50, + completed_task_count: 1 }, - { - UpgradeItem: { - stage_id: 3, - status: 'PENDING', - progress_percent: 0 + upgrade_items: [ + { + UpgradeItem: { + stage_id: 2, + status: 'ABORTED', + progress_percent: 99 + } + }, + { + UpgradeItem: { + stage_id: 3, + status: 'PENDING', + progress_percent: 0 + } } - } - ] - } - ] - }; - controller.set('upgradeData', oldData); - controller.updateUpgradeData(newData); - expect(controller.get('upgradeData.upgradeGroups')[0].get('status')).to.equal('COMPLETED'); - expect(controller.get('upgradeData.upgradeGroups')[0].get('progress_percent')).to.equal(100); - expect(controller.get('upgradeData.upgradeGroups')[0].get('completed_task_count')).to.equal(3); - expect(controller.get('upgradeData.upgradeGroups')[0].get('upgradeItems')[0].get('status')).to.equal('COMPLETED'); - expect(controller.get('upgradeData.upgradeGroups')[0].get('upgradeItems')[0].get('progress_percent')).to.equal(100); - expect(controller.get('upgradeData.upgradeGroups')[0].get('hasExpandableItems')).to.be.true; - expect(controller.get('upgradeData.upgradeGroups')[1].get('status')).to.equal('ABORTED'); - expect(controller.get('upgradeData.upgradeGroups')[1].get('progress_percent')).to.equal(50); - expect(controller.get('upgradeData.upgradeGroups')[1].get('completed_task_count')).to.equal(1); - expect(controller.get('upgradeData.upgradeGroups')[1].get('upgradeItems')[0].get('status')).to.equal('ABORTED'); - expect(controller.get('upgradeData.upgradeGroups')[1].get('upgradeItems')[1].get('status')).to.equal('PENDING'); - expect(controller.get('upgradeData.upgradeGroups')[1].get('upgradeItems')[0].get('progress_percent')).to.equal(99); - expect(controller.get('upgradeData.upgradeGroups')[1].get('upgradeItems')[1].get('progress_percent')).to.equal(0); - expect(controller.get('upgradeData.upgradeGroups')[1].get('hasExpandableItems')).to.be.false; + ] + } + ] + }; + controller.set('upgradeData', oldData); + controller.updateUpgradeData(newData); + groups = controller.get('upgradeData.upgradeGroups'); + }); + + it("checking 1st group", function() { + expect(groups[0].get('status')).to.equal('COMPLETED'); + expect(groups[0].get('progress_percent')).to.equal(100); + expect(groups[0].get('completed_task_count')).to.equal(3); + expect(groups[0].get('upgradeItems')[0].get('status')).to.equal('COMPLETED'); + expect(groups[0].get('upgradeItems')[0].get('progress_percent')).to.equal(100); + expect(groups[0].get('hasExpandableItems')).to.be.true; + }); + + it('checking 2nd group', function () { + expect(groups[1].get('status')).to.equal('ABORTED'); + expect(groups[1].get('progress_percent')).to.equal(50); + expect(groups[1].get('completed_task_count')).to.equal(1); + expect(groups[1].get('upgradeItems').mapProperty('status')).to.eql(['ABORTED', 'PENDING']); + expect(groups[1].get('upgradeItems').mapProperty('progress_percent')).to.eql([99, 0]); + expect(groups[1].get('hasExpandableItems')).to.be.false; + }); + }); }); describe("#initUpgradeData()", function() { beforeEach(function () { sinon.stub(controller, 'setDBProperty'); - }); - afterEach(function () { - controller.setDBProperty.restore(); - }); - it("", function() { var newData = { Upgrade: { request_id: 1, @@ -731,17 +754,24 @@ describe('App.MainAdminStackAndUpgradeController', function() { ] }; controller.initUpgradeData(newData); + }); + afterEach(function () { + controller.setDBProperty.restore(); + }); + it("setDBProperty called with valid arguments", function() { expect(controller.setDBProperty.calledWith('downgradeAllowed', false)).to.be.true; + }); + it('downgradeAllowed is false', function () { expect(controller.get('downgradeAllowed')).to.be.false; + }); + it('upgradeData.Upgrade.request_id is 1', function () { expect(controller.get('upgradeData.Upgrade.request_id')).to.equal(1); - expect(controller.get('upgradeData.upgradeGroups')[0].get('group_id')).to.equal(3); - expect(controller.get('upgradeData.upgradeGroups')[1].get('group_id')).to.equal(2); - expect(controller.get('upgradeData.upgradeGroups')[2].get('group_id')).to.equal(1); - expect(controller.get('upgradeData.upgradeGroups')[2].get('upgradeItems')[0].get('stage_id')).to.equal(2); - expect(controller.get('upgradeData.upgradeGroups')[2].get('upgradeItems')[1].get('stage_id')).to.equal(1); - expect(controller.get('upgradeData.upgradeGroups')[0].get('hasExpandableItems')).to.be.false; - expect(controller.get('upgradeData.upgradeGroups')[1].get('hasExpandableItems')).to.be.false; - expect(controller.get('upgradeData.upgradeGroups')[2].get('hasExpandableItems')).to.be.true; + }); + it('upgradeData.upgradeGroups contain valid data', function () { + var groups = controller.get('upgradeData.upgradeGroups'); + expect(groups.mapProperty('group_id')).to.eql([3,2,1]); + expect(groups[2].get('upgradeItems').mapProperty('stage_id')).to.eql([2,1]); + expect(groups.mapProperty('hasExpandableItems')).to.eql([false, false, true]); }); }); @@ -896,10 +926,11 @@ describe('App.MainAdminStackAndUpgradeController', function() { isDowngrade: true, upgradeType: "NON_ROLLING" }); - expect(App.ajax.send.getCall(0).args[0].name).to.eql('admin.downgrade.start'); - expect(App.ajax.send.getCall(0).args[0].sender).to.eql(controller); - expect(App.ajax.send.getCall(0).args[0].success).to.eql('upgradeSuccessCallback'); - expect(App.ajax.send.getCall(0).args[0].callback).to.be.called; + var callArgs = App.ajax.send.getCall(0).args[0]; + expect(callArgs.name).to.eql('admin.downgrade.start'); + expect(callArgs.sender).to.eql(controller); + expect(callArgs.success).to.eql('upgradeSuccessCallback'); + expect(callArgs.callback).to.be.called; }); }); @@ -943,21 +974,26 @@ describe('App.MainAdminStackAndUpgradeController', function() { defaultStatus: 'INIT', stackVersion: {} }); - before(function () { + beforeEach(function () { sinon.spy(mock, 'set'); sinon.stub(App.db, 'set', Em.K); sinon.stub(App.clusterStatus, 'setClusterStatus', Em.K); sinon.stub(App.RepositoryVersion, 'find').returns(mock); + controller.installRepoVersionSuccess({Requests: {id: 1}}, {}, {id: 1}); }); - after(function () { + afterEach(function () { App.db.set.restore(); App.clusterStatus.setClusterStatus.restore(); App.RepositoryVersion.find.restore(); + mock.set.restore(); }); - it("", function() { - controller.installRepoVersionSuccess({Requests: {id: 1}}, {}, {id: 1}); + it("data sdtored to the local db", function() { expect(App.db.set.calledWith('repoVersionInstall', 'id', [1])).to.be.true; + }); + it('clusterStatus is updated', function () { expect(App.clusterStatus.setClusterStatus.calledOnce).to.be.true; + }); + it('App.RepositoryVersion models have valid states', function () { expect(App.RepositoryVersion.find.calledWith(1)).to.be.true; expect(App.RepositoryVersion.find(1).get('defaultStatus')).to.equal('INSTALLING'); expect(App.RepositoryVersion.find(1).get('stackVersion.state')).to.equal('INSTALLING'); @@ -968,26 +1004,25 @@ describe('App.MainAdminStackAndUpgradeController', function() { before(function () { sinon.stub(App.ajax, 'send', function () { return { - done: function (callback) { - callback(); - } + done: Em.clb } }); }); after(function () { App.ajax.send.restore(); }); - it("", function () { + it("valid request is sent", function () { var item = Em.Object.create({ request_id: 1, stage_id: 1, group_id: 1 }); controller.setUpgradeItemStatus(item, 'PENDING'); - expect(App.ajax.send.getCall(0).args[0].data).to.eql({upgradeId: 1, itemId: 1, groupId: 1, status: 'PENDING'}); - expect(App.ajax.send.getCall(0).args[0].name).to.eql('admin.upgrade.upgradeItem.setState'); - expect(App.ajax.send.getCall(0).args[0].sender).to.eql(controller); - expect(App.ajax.send.getCall(0).args[0].callback).to.be.called; + var callArgs = App.ajax.send.getCall(0).args[0]; + expect(callArgs.data).to.eql({upgradeId: 1, itemId: 1, groupId: 1, status: 'PENDING'}); + expect(callArgs.name).to.eql('admin.upgrade.upgradeItem.setState'); + expect(callArgs.sender).to.eql(controller); + expect(callArgs.callback).to.be.called; expect(item.get('status')).to.equal('PENDING'); }); }); @@ -998,7 +1033,7 @@ describe('App.MainAdminStackAndUpgradeController', function() { operatingSystems: [ Em.Object.create({ osType: "redhat6", - isDisabled: Ember.computed.not('isSelected'), + isDisabled: Em.computed.not('isSelected'), repositories: [Em.Object.create({ "baseUrl": "111121", "repoId": "HDP-2.2", @@ -1124,24 +1159,6 @@ describe('App.MainAdminStackAndUpgradeController', function() { }); }); - describe("#showProgressPopup()", function () { - var mock = { - initPopup: Em.K - }; - before(function () { - sinon.stub(App.router, 'get').withArgs('highAvailabilityProgressPopupController').returns(mock); - sinon.spy(mock, 'initPopup'); - }); - after(function () { - App.router.get.restore(); - mock.initPopup.restore(); - }); - it("", function () { - controller.showProgressPopup(Em.Object.create()); - expect(mock.initPopup.calledOnce).to.be.true; - }); - }); - describe("#getUrl()", function() { beforeEach(function(){ controller.reopen({ @@ -1168,7 +1185,7 @@ describe('App.MainAdminStackAndUpgradeController', function() { after(function () { App.HttpClient.get.restore(); }); - it("", function () { + it("HttpClient did get-request", function () { controller.loadStackVersionsToModel(); expect(App.HttpClient.get.calledOnce).to.be.true; }); @@ -1181,7 +1198,7 @@ describe('App.MainAdminStackAndUpgradeController', function() { after(function () { App.HttpClient.get.restore(); }); - it("", function () { + it("HttpClient did get-request", function () { controller.loadRepoVersionsToModel(); expect(App.HttpClient.get.calledOnce).to.be.true; }); @@ -1333,23 +1350,27 @@ describe('App.MainAdminStackAndUpgradeController', function() { describe("#suspendUpgrade()", function() { beforeEach(function () { sinon.stub(controller, 'abortUpgrade').returns({ - done: function (callback) { - callback(); - } + done: Em.clb }); sinon.stub(controller, 'setDBProperty', Em.K); sinon.stub(App.clusterStatus, 'setClusterStatus', Em.K); + controller.suspendUpgrade(); }); afterEach(function () { controller.abortUpgrade.restore(); controller.setDBProperty.restore(); App.clusterStatus.setClusterStatus.restore(); }); - it("", function() { - controller.suspendUpgrade(); + it("upgrade aborted", function() { expect(controller.abortUpgrade.calledOnce).to.be.true; + }); + it('App.upgradeState is ABORTED', function () { expect(App.get('upgradeState')).to.equal('ABORTED'); + }); + it('new upgradeState is saved to the localDB', function () { expect(controller.setDBProperty.calledWith('upgradeState', 'ABORTED')).to.be.true; + }); + it('clusterStatus is updated', function () { expect(App.clusterStatus.setClusterStatus.calledOnce).to.be.true; }); }); @@ -1357,23 +1378,27 @@ describe('App.MainAdminStackAndUpgradeController', function() { describe("#resumeUpgrade()", function() { beforeEach(function () { sinon.stub(controller, 'retryUpgrade').returns({ - done: function (callback) { - callback(); - } + done: Em.clb }); sinon.stub(controller, 'setDBProperty', Em.K); sinon.stub(App.clusterStatus, 'setClusterStatus', Em.K); + controller.resumeUpgrade(); }); afterEach(function () { controller.retryUpgrade.restore(); controller.setDBProperty.restore(); App.clusterStatus.setClusterStatus.restore(); }); - it("", function() { - controller.resumeUpgrade(); + it("Upgrade is retrying", function() { expect(controller.retryUpgrade.calledOnce).to.be.true; + }); + it('App.upgradeState is PENDING', function () { expect(App.get('upgradeState')).to.equal('PENDING'); + }); + it('new upgradeState is saved to the localDB', function () { expect(controller.setDBProperty.calledWith('upgradeState', 'PENDING')).to.be.true; + }); + it('clusterStatus is updated', function () { expect(App.clusterStatus.setClusterStatus.calledOnce).to.be.true; }); }); @@ -1406,6 +1431,20 @@ describe('App.MainAdminStackAndUpgradeController', function() { }); describe("#restoreLastUpgrade()", function () { + + var data = { + Upgrade: { + request_id: 1, + direction: 'UPGRADE', + request_status: 'PENDING', + upgrade_type: 'ROLLING', + downgrade_allowed: true, + skip_failures: true, + skip_service_check_failures: true, + to_version: '1' + } + }; + beforeEach(function () { sinon.stub(App.RepositoryVersion, 'find').returns([Em.Object.create({ repositoryVersion: '1', @@ -1422,6 +1461,7 @@ describe('App.MainAdminStackAndUpgradeController', function() { sinon.stub(controller, 'setDBProperty'); sinon.stub(controller, 'initDBProperties'); sinon.stub(controller, 'loadUpgradeData'); + controller.restoreLastUpgrade(data); }); afterEach(function () { App.RepositoryVersion.find.restore(); @@ -1431,20 +1471,7 @@ describe('App.MainAdminStackAndUpgradeController', function() { controller.initDBProperties.restore(); controller.loadUpgradeData.restore(); }); - it("", function () { - var data = { - Upgrade: { - request_id: 1, - direction: 'UPGRADE', - request_status: 'PENDING', - upgrade_type: 'ROLLING', - downgrade_allowed: true, - skip_failures: true, - skip_service_check_failures: true, - to_version: '1' - } - }; - controller.restoreLastUpgrade(data); + it('proper data is saved to the localDB', function () { expect(controller.setDBProperties.getCall(0).args[0]).to.eql({ upgradeId: 1, isDowngrade: false, @@ -1457,9 +1484,17 @@ describe('App.MainAdminStackAndUpgradeController', function() { skipSCFailures: true }) }); + }); + it('models are saved', function () { expect(controller.loadRepoVersionsToModel.calledOnce).to.be.true; + }); + it('correct upgradeVersion is saved to the DB', function () { expect(controller.setDBProperty.calledWith('upgradeVersion', 'HDP-1')).to.be.true; + }); + it('initDBProperties is called', function () { expect(controller.initDBProperties.calledOnce).to.be.true; + }); + it('loadUpgradeData called with valid arguments', function () { expect(controller.loadUpgradeData.calledWith(true)).to.be.true; }); }); http://git-wip-us.apache.org/repos/asf/ambari/blob/1901b395/ambari-web/test/controllers/main/alerts/add_alert_definition/add_alert_definition_controller_test.js ---------------------------------------------------------------------- diff --git a/ambari-web/test/controllers/main/alerts/add_alert_definition/add_alert_definition_controller_test.js b/ambari-web/test/controllers/main/alerts/add_alert_definition/add_alert_definition_controller_test.js index 2e0208e..05ab913 100644 --- a/ambari-web/test/controllers/main/alerts/add_alert_definition/add_alert_definition_controller_test.js +++ b/ambari-web/test/controllers/main/alerts/add_alert_definition/add_alert_definition_controller_test.js @@ -35,7 +35,7 @@ describe('App.AddAlertDefinitionController', function () { App.ajax.send.restore(); }); - it("", function () { + it("valid request is sent", function () { controller.createNewAlertDefinition('data'); expect(App.ajax.send.getCall(0).args[0]).to.eql({ name: 'alerts.create_alert_definition', @@ -55,7 +55,7 @@ describe('App.AddAlertDefinitionController', function () { controller.clear.restore(); }); - it("", function () { + it("clear is called", function () { controller.finish(); expect(controller.clear.calledOnce).to.be.true; }); http://git-wip-us.apache.org/repos/asf/ambari/blob/1901b395/ambari-web/test/controllers/main/alerts/alert_instances_controller_test.js ---------------------------------------------------------------------- diff --git a/ambari-web/test/controllers/main/alerts/alert_instances_controller_test.js b/ambari-web/test/controllers/main/alerts/alert_instances_controller_test.js index 8958342..051202d 100644 --- a/ambari-web/test/controllers/main/alerts/alert_instances_controller_test.js +++ b/ambari-web/test/controllers/main/alerts/alert_instances_controller_test.js @@ -41,16 +41,18 @@ describe('App.MainAlertInstancesController', function () { it('should load by Host name', function () { controller.loadAlertInstancesByHost('host'); - expect(App.ajax.send.args[0][0].name).to.equal('alerts.instances.by_host'); - expect(App.ajax.send.args[0][0].data.hostName).to.equal('host'); + var callArgs = App.ajax.send.args[0][0]; + expect(callArgs.name).to.equal('alerts.instances.by_host'); + expect(callArgs.data.hostName).to.equal('host'); }); it('should load by AlertDefinition id', function () { controller.loadAlertInstancesByAlertDefinition('1'); - expect(App.ajax.send.args[0][0].name).to.equal('alerts.instances.by_definition'); - expect(App.ajax.send.args[0][0].data.definitionId).to.equal('1'); + var callArgs = App.ajax.send.args[0][0]; + expect(callArgs.name).to.equal('alerts.instances.by_definition'); + expect(callArgs.data.definitionId).to.equal('1'); }); http://git-wip-us.apache.org/repos/asf/ambari/blob/1901b395/ambari-web/test/controllers/main/alerts/definitions_configs_controller_test.js ---------------------------------------------------------------------- diff --git a/ambari-web/test/controllers/main/alerts/definitions_configs_controller_test.js b/ambari-web/test/controllers/main/alerts/definitions_configs_controller_test.js index 097fc00..530c6ad 100644 --- a/ambari-web/test/controllers/main/alerts/definitions_configs_controller_test.js +++ b/ambari-web/test/controllers/main/alerts/definitions_configs_controller_test.js @@ -28,6 +28,10 @@ function getController() { }); } +function getEmptyArray() { + return []; +} + describe('App.MainAlertDefinitionConfigsController', function () { beforeEach(function () { @@ -40,21 +44,11 @@ describe('App.MainAlertDefinitionConfigsController', function () { beforeEach(function () { controller.set('content', Em.Object.create({})); - sinon.stub(controller, 'renderPortConfigs', function () { - return []; - }); - sinon.stub(controller, 'renderMetricConfigs', function () { - return []; - }); - sinon.stub(controller, 'renderWebConfigs', function () { - return []; - }); - sinon.stub(controller, 'renderScriptConfigs', function () { - return []; - }); - sinon.stub(controller, 'renderAggregateConfigs', function () { - return []; - }); + sinon.stub(controller, 'renderPortConfigs', getEmptyArray); + sinon.stub(controller, 'renderMetricConfigs', getEmptyArray); + sinon.stub(controller, 'renderWebConfigs', getEmptyArray); + sinon.stub(controller, 'renderScriptConfigs', getEmptyArray); + sinon.stub(controller, 'renderAggregateConfigs', getEmptyArray); }); afterEach(function () { http://git-wip-us.apache.org/repos/asf/ambari/blob/1901b395/ambari-web/test/controllers/main/charts/heatmap_metrics/heatmap_metric_test.js ---------------------------------------------------------------------- diff --git a/ambari-web/test/controllers/main/charts/heatmap_metrics/heatmap_metric_test.js b/ambari-web/test/controllers/main/charts/heatmap_metrics/heatmap_metric_test.js index b057a80..0ab3ea3 100644 --- a/ambari-web/test/controllers/main/charts/heatmap_metrics/heatmap_metric_test.js +++ b/ambari-web/test/controllers/main/charts/heatmap_metrics/heatmap_metric_test.js @@ -148,7 +148,7 @@ describe('MainChartHeatmapMetric', function () { }, result: 'background-image:repeating-linear-gradient(-45deg, #FF1E10, #FF1E10 3px, #ff6c00 3px, #ff6c00 6px)' } - ] + ]; testCases.forEach(function(test){ it(test.title, function () { http://git-wip-us.apache.org/repos/asf/ambari/blob/1901b395/ambari-web/test/controllers/main/dashboard/config_history_controller_test.js ---------------------------------------------------------------------- diff --git a/ambari-web/test/controllers/main/dashboard/config_history_controller_test.js b/ambari-web/test/controllers/main/dashboard/config_history_controller_test.js index a1bc7af..24497b6 100644 --- a/ambari-web/test/controllers/main/dashboard/config_history_controller_test.js +++ b/ambari-web/test/controllers/main/dashboard/config_history_controller_test.js @@ -36,50 +36,70 @@ describe('MainConfigHistoryController', function () { }); }); describe('#load()', function () { - it('', function () { + + beforeEach(function () { sinon.stub(controller, 'updateTotalCounter', Em.K); sinon.stub(controller, 'loadConfigVersionsToModel').returns({done: Em.K}); - controller.load(); - expect(controller.updateTotalCounter.calledOnce).to.be.true; + }); + afterEach(function () { controller.updateTotalCounter.restore(); controller.loadConfigVersionsToModel.restore(); }); + + it('updateTotalCounter is called once', function () { + expect(controller.updateTotalCounter.calledOnce).to.be.true; + }); }); describe('#loadConfigVersionsToModel()', function () { - it('', function () { + + beforeEach(function () { sinon.stub(App.HttpClient, 'get', Em.K); sinon.stub(controller, 'getUrl', Em.K); sinon.stub(controller, 'getQueryParameters', function(){ return [1]; }); - controller.loadConfigVersionsToModel(); - expect(App.HttpClient.get.calledOnce).to.be.true; - expect(controller.getQueryParameters.calledOnce).to.be.true; - expect(controller.getUrl.calledWith([1])).to.be.true; - + }); + afterEach(function () { controller.getUrl.restore(); controller.getQueryParameters.restore(); App.HttpClient.get.restore(); }); + + it('HttpClient.get is called once', function () { + expect(App.HttpClient.get.calledOnce).to.be.true; + }); + + it('getQueryParameters is called once', function () { + expect(controller.getQueryParameters.calledOnce).to.be.true; + }); + + it('getUrl is called with correct data', function () { + expect(controller.getUrl.calledWith([1])).to.be.true; + }); }); describe('#updateTotalCounter()', function () { - it('', function () { - sinon.stub(App.ajax, 'send', Em.K); + beforeEach(function () { + sinon.stub(App.ajax, 'send', Em.K); controller.updateTotalCounter(); - expect(App.ajax.send.calledOnce).to.be.true; + }); + afterEach(function () { App.ajax.send.restore(); }); + + it('ajax-request is sent', function () { + expect(App.ajax.send.calledOnce).to.be.true; + }); }); describe('#updateTotalCounterSuccess()', function () { - it('', function () { + it('totalCount is updated', function () { controller.updateTotalCounterSuccess({itemTotal: 1}); expect(controller.get('totalCount')).to.equal(1); }); http://git-wip-us.apache.org/repos/asf/ambari/blob/1901b395/ambari-web/test/controllers/main/host/add_controller_test.js ---------------------------------------------------------------------- diff --git a/ambari-web/test/controllers/main/host/add_controller_test.js b/ambari-web/test/controllers/main/host/add_controller_test.js index 5c5bd32..ea9d032 100644 --- a/ambari-web/test/controllers/main/host/add_controller_test.js +++ b/ambari-web/test/controllers/main/host/add_controller_test.js @@ -403,7 +403,7 @@ describe('App.AddHostController', function () { after(function () { App.router.getClusterName.restore(); }); - it("", function () { + it("cluster data is valid", function () { controller.set('clusterStatusTemplate', {'prop': 'clusterStatusTemplate'}); expect(controller.getCluster()).to.be.eql({ prop: 'clusterStatusTemplate', @@ -601,24 +601,28 @@ describe('App.AddHostController', function () { }); describe("#saveClients()", function () { - before(function () { + beforeEach(function () { sinon.stub(App.StackServiceComponent, 'find').returns('StackServiceComponent'); sinon.stub(controller, 'getClientsToInstall').returns(['client']); sinon.stub(controller, 'setDBProperty', Em.K); + controller.set('content.services', [Em.Object.create({'isSelected': true, 'isInstallable': true})]); + controller.saveClients(); }); - after(function () { + afterEach(function () { controller.setDBProperty.restore(); App.StackServiceComponent.find.restore(); controller.getClientsToInstall.restore(); }); - it("", function () { - controller.set('content.services', [Em.Object.create({'isSelected': true, 'isInstallable': true})]); - controller.saveClients(); + it("getClientsToInstall called with valid arguments", function () { expect(controller.getClientsToInstall.calledWith( [Em.Object.create({'isSelected': true, 'isInstallable': true})], 'StackServiceComponent' )).to.be.true; + }); + it('setDBProperty called with valid arguments', function () { expect(controller.setDBProperty.calledWith('clientInfo', ['client'])).to.be.true; + }); + it('content.clients are valid', function () { expect(controller.get('content.clients')).to.be.eql(['client']); }); }); @@ -752,7 +756,7 @@ describe('App.AddHostController', function () { after(function () { controller.getDBProperty.restore(); }); - it("", function () { + it("content.configGroups are valid", function () { controller.getServiceConfigGroups(); expect(controller.get('content.configGroups')).to.eql(['serviceConfigGroup']); }); @@ -777,23 +781,29 @@ describe('App.AddHostController', function () { }); describe("#loadServiceConfigGroups()", function () { - before(function () { + beforeEach(function () { sinon.stub(controller, 'loadServiceConfigGroupsBySlaves', Em.K); sinon.stub(controller, 'loadServiceConfigGroupsByClients', Em.K); sinon.stub(controller, 'sortServiceConfigGroups', Em.K); + controller.loadServiceConfigGroups(); }); - after(function () { + afterEach(function () { controller.loadServiceConfigGroupsBySlaves.restore(); controller.loadServiceConfigGroupsByClients.restore(); controller.sortServiceConfigGroups.restore(); }); - it("", function () { - controller.loadServiceConfigGroups(); + it("loadServiceConfigGroupsByClients called with []", function () { expect(controller.loadServiceConfigGroupsByClients.calledWith([])).to.be.true; + }); + it('loadServiceConfigGroupsBySlaves called with []', function () { expect(controller.loadServiceConfigGroupsBySlaves.calledWith([])).to.be.true; + }); + it('sortServiceConfigGroups called with []', function () { expect(controller.sortServiceConfigGroups.calledWith([])).to.be.true; - expect(controller.get('content.configGroups')).to.eql([]); }); + it('content.configGroups are empty', function () { + expect(controller.get('content.configGroups')).to.eql([]); + }) }); describe("#sortServiceConfigGroups", function () { @@ -1260,15 +1270,19 @@ describe('App.AddHostController', function () { beforeEach(function () { sinon.stub(controller, 'clearInstallOptions', Em.K); sinon.stub(controller, 'getCluster').returns({}); + controller.clearAllSteps(); }); afterEach(function () { controller.clearInstallOptions.restore(); controller.getCluster.restore(); }); - it("", function () { - controller.clearAllSteps(); + it("getCluster called once", function () { expect(controller.getCluster.calledOnce).to.be.true; + }); + it('clearInstallOptions called once', function () { expect(controller.clearInstallOptions.calledOnce).to.be.true; + }); + it('content.cluster is empty object', function () { expect(controller.get('content.cluster')).to.eql({}); }); }); @@ -1298,6 +1312,7 @@ describe('App.AddHostController', function () { sinon.stub(App.router, 'get').returns(mock); sinon.spy(mock, 'updateAll'); sinon.spy(mock, 'getAllHostNames'); + controller.finish(); }); afterEach(function () { controller.clearAllSteps.restore(); @@ -1307,12 +1322,19 @@ describe('App.AddHostController', function () { mock.updateAll.restore(); mock.getAllHostNames.restore(); }); - it("", function () { - controller.finish(); + it("clearAllSteps called once", function () { expect(controller.clearAllSteps.calledOnce).to.be.true; + }); + it('clearStorageData called once', function () { expect(controller.clearStorageData.calledOnce).to.be.true; + }); + it('updateAll called once', function () { expect(mock.updateAll.calledOnce).to.be.true; + }); + it('App.updater.immediateRun called with valid arguments', function () { expect(App.updater.immediateRun.calledWith('updateHost')).to.be.true; + }); + it('getAllHostNames called once', function () { expect(mock.getAllHostNames.calledOnce).to.be.true; }); }); http://git-wip-us.apache.org/repos/asf/ambari/blob/1901b395/ambari-web/test/controllers/main/host/details_test.js ---------------------------------------------------------------------- diff --git a/ambari-web/test/controllers/main/host/details_test.js b/ambari-web/test/controllers/main/host/details_test.js index 0806823..9c8e4ad 100644 --- a/ambari-web/test/controllers/main/host/details_test.js +++ b/ambari-web/test/controllers/main/host/details_test.js @@ -83,12 +83,8 @@ describe('App.MainHostDetailsController', function () { describe('#stopComponent()', function () { beforeEach(function () { - sinon.stub(App, 'showConfirmationPopup', function (callback) { - callback(); - }); - sinon.stub(controller, 'checkNnLastCheckpointTime', function (callback) { - callback(); - }); + sinon.stub(App, 'showConfirmationPopup', Em.clb); + sinon.stub(controller, 'checkNnLastCheckpointTime', Em.clb); sinon.stub(controller, 'sendComponentCommand'); }); afterEach(function () { @@ -124,7 +120,7 @@ describe('App.MainHostDetailsController', function () { }); describe("#pullNnCheckPointTime()", function() { - it("", function() { + it("valid request is sent", function() { controller.pullNnCheckPointTime('host1'); expect(App.ajax.send.calledWith({ name: 'common.host_component.getNnCheckPointTime', @@ -150,10 +146,7 @@ describe('App.MainHostDetailsController', function () { expect(App.ajax.send.getCall(0).args[0].data).to.be.eql({ "hostName": "host1", "context": {}, - "component": Em.Object.create({ - service: {serviceName: 'S1'}, - componentName: 'COMP1' - }), + "component": component, "HostRoles": { "state": "state" }, @@ -179,16 +172,7 @@ describe('App.MainHostDetailsController', function () { expect(App.ajax.send.getCall(0).args[0].data).to.be.eql({ "hostName": "host1", "context": {}, - "component": [ - Em.Object.create({ - service: {serviceName: 'S1'}, - componentName: 'COMP1' - }), - Em.Object.create({ - service: {serviceName: 'S1'}, - componentName: 'COMP2' - }) - ], + "component": component, "HostRoles": { "state": "state" }, @@ -622,7 +606,7 @@ describe('App.MainHostDetailsController', function () { }); describe("#loadOozieConfigs()", function() { - it("", function() { + it("valid request is sent", function() { controller.loadOozieConfigs({Clusters: { desired_configs: { 'oozie-env': { @@ -643,7 +627,7 @@ describe('App.MainHostDetailsController', function () { }); describe("#loadStormConfigs()", function() { - it("", function() { + it("valid request is sent", function() { controller.loadStormConfigs({Clusters: { desired_configs: { 'storm-site': { @@ -663,30 +647,34 @@ describe('App.MainHostDetailsController', function () { }); describe("#onLoadStormConfigs()", function() { + + var data = {items: [ + { + type: 'storm-site', + properties: { + 'nimbus.seeds': '' + } + } + ]}; + beforeEach(function () { sinon.stub(controller, 'getStormNimbusHosts').returns("host1"); sinon.stub(controller, 'updateZkConfigs', Em.K); sinon.stub(controller, 'saveConfigsBatch', Em.K); + controller.set('nimbusHost', 'host2'); + controller.onLoadStormConfigs(data); }); afterEach(function () { controller.getStormNimbusHosts.restore(); controller.updateZkConfigs.restore(); controller.saveConfigsBatch.restore(); }); - it("", function() { - var data = {items: [ - { - type: 'storm-site', - properties: { - 'nimbus.seeds': '' - } - } - ]}; - controller.set('nimbusHost', 'host2'); - controller.onLoadStormConfigs(data); + it("updateZkConfigs called with valid arguments", function() { expect(controller.updateZkConfigs.calledWith({'storm-site': { 'nimbus.seeds': "'host1'" }})).to.be.true; + }); + it('saveConfigsBatch called with valid arguments', function () { expect(controller.saveConfigsBatch.calledWith([ { properties: { @@ -703,7 +691,7 @@ describe('App.MainHostDetailsController', function () { }); describe("#loadHiveConfigs()", function() { - it("", function() { + it("valid request is sent", function() { controller.loadHiveConfigs({Clusters: { desired_configs: { 'hive-site': { @@ -732,7 +720,7 @@ describe('App.MainHostDetailsController', function () { }); describe("#loadRangerConfigs()", function() { - it("", function() { + it("valid request is sent", function() { controller.loadRangerConfigs({Clusters: { desired_configs: { 'hdfs-site': { @@ -763,18 +751,25 @@ describe('App.MainHostDetailsController', function () { componentName: 'RANGER_KMS_SERVER', hostName: 'host1' }]); - }); - afterEach(function(){ - App.HostComponent.find.restore(); - }); - it("", function() { controller.set('rangerKMSServerHost', 'host2'); controller.set('content.hostName', 'host1'); controller.set('deleteRangerKMSServer', true); controller.set('fromDeleteHost', true); - expect(controller.getRangerKMSServerHosts()).to.eql(['host2']); + this.hosts = controller.getRangerKMSServerHosts(); + }); + afterEach(function(){ + App.HostComponent.find.restore(); + }); + it('hosts list is valid', function() { + expect(this.hosts).to.eql(['host2']); + }); + it('rangerKMSServerHost is empty', function () { expect(controller.get('rangerKMSServerHost')).to.be.empty; + }); + it('deleteRangerKMSServer is false', function () { expect(controller.get('deleteRangerKMSServer')).to.be.false; + }); + it('fromDeleteHost is false', function () { expect(controller.get('fromDeleteHost')).to.be.false; }); }); @@ -785,18 +780,25 @@ describe('App.MainHostDetailsController', function () { componentName: 'NIMBUS', hostName: 'host1' }]); - }); - afterEach(function(){ - App.HostComponent.find.restore(); - }); - it("", function() { controller.set('nimbusHost', 'host2'); controller.set('content.hostName', 'host1'); controller.set('deleteNimbusHost', true); controller.set('fromDeleteHost', true); - expect(controller.getStormNimbusHosts()).to.eql(['host2']); + this.hosts = controller.getStormNimbusHosts(); + }); + afterEach(function(){ + App.HostComponent.find.restore(); + }); + it("hosts list is valid", function() { + expect(this.hosts).to.eql(['host2']); + }); + it('nimbusHost is empty', function () { expect(controller.get('nimbusHost')).to.be.empty; + }); + it('deleteNimbusHost is false', function () { expect(controller.get('deleteNimbusHost')).to.be.false; + }); + it('fromDeleteHost is false', function () { expect(controller.get('fromDeleteHost')).to.be.false; }); }); @@ -1452,8 +1454,14 @@ describe('App.MainHostDetailsController', function () { }); describe('#checkRegionServerState()', function () { - it('', function () { - expect(controller.checkRegionServerState('host1')).to.be.an('object'); + var result; + beforeEach(function () { + result = controller.checkRegionServerState('host1'); + }); + it('returns object', function () { + expect(result).to.be.an('object'); + }); + it('request is sent with correct data', function () { expect(App.ajax.send.getCall(0).args[0].data.hostNames).to.equal('host1'); }); }); @@ -1536,7 +1544,7 @@ describe('App.MainHostDetailsController', function () { afterEach(function () { App.ModalPopup.show.restore(); }); - it('', function () { + it('modal popup is shown', function () { controller.showRegionServerWarning(); expect(App.ModalPopup.show.calledOnce).to.be.true; }); @@ -1666,7 +1674,7 @@ describe('App.MainHostDetailsController', function () { afterEach(function() { hostsManagement.setRackInfo.restore(); }); - it("", function() { + it('setRackInfo called with valid arguments', function() { controller.set('content.rack', 'rack'); controller.set('content.hostName', 'host1'); controller.setRackIdForHost(); @@ -2946,25 +2954,29 @@ describe('App.MainHostDetailsController', function () { }); describe("#installVersionSuccessCallback()", function () { - before(function () { + var version = Em.Object.create({ + id: 1, + status: 'INIT' + }); + beforeEach(function () { this.mock = sinon.stub(App.HostStackVersion, 'find'); + this.mock.returns(version); sinon.stub(App.db, 'set', Em.K); sinon.stub(App.clusterStatus, 'setClusterStatus', Em.K); + controller.installVersionSuccessCallback({Requests: {id: 1}}, {}, {version: version}); }); - after(function () { + afterEach(function () { this.mock.restore(); App.db.set.restore(); App.clusterStatus.setClusterStatus.restore(); }); - it("", function () { - var version = Em.Object.create({ - id: 1, - status: 'INIT' - }); - this.mock.returns(version); - controller.installVersionSuccessCallback({Requests: {id: 1}}, {}, {version: version}); + it("status is INSTALLING", function () { expect(version.get('status')).to.equal('INSTALLING'); + }); + it('valid data is saved to the localDB', function () { expect(App.db.set.calledWith('repoVersionInstall', 'id', [1])).to.be.true; + }); + it('clusterStatus is updated', function () { expect(App.clusterStatus.setClusterStatus.calledOnce).to.be.true; }); }); @@ -3165,7 +3177,16 @@ describe('App.MainHostDetailsController', function () { }); describe("#removeHostComponentModel()", function () { + beforeEach(function () { + App.cache['services'] = [ + { + ServiceInfo: { + service_name: 'S1' + }, + host_components: ['C1_host1'] + } + ]; sinon.stub(App.HostComponent, 'find').returns([ Em.Object.create({ id: 'C1_host1', @@ -3177,23 +3198,16 @@ describe('App.MainHostDetailsController', function () { }) ]); sinon.stub(App.serviceMapper, 'deleteRecord', Em.K); + controller.removeHostComponentModel('C1', 'host1'); }); afterEach(function () { App.HostComponent.find.restore(); App.serviceMapper.deleteRecord.restore(); }); - it("", function () { - App.cache['services'] = [ - { - ServiceInfo: { - service_name: 'S1' - }, - host_components: ['C1_host1'] - } - ]; - controller.removeHostComponentModel('C1', 'host1'); + it("App.cache is updated", function () { expect(App.cache['services'][0].host_components).to.be.empty; - expect(App.HostComponent.find.calledOnce).to.be.true; + }); + it('Record is deleted', function () { expect(App.serviceMapper.deleteRecord.calledOnce).to.be.true; }); }); http://git-wip-us.apache.org/repos/asf/ambari/blob/1901b395/ambari-web/test/controllers/main/host/host_alerts_controller_test.js ---------------------------------------------------------------------- diff --git a/ambari-web/test/controllers/main/host/host_alerts_controller_test.js b/ambari-web/test/controllers/main/host/host_alerts_controller_test.js index 2cfdac5..fadc106 100644 --- a/ambari-web/test/controllers/main/host/host_alerts_controller_test.js +++ b/ambari-web/test/controllers/main/host/host_alerts_controller_test.js @@ -45,9 +45,8 @@ describe('App.MainHostAlertsController', function () { App.router.transitionTo.restore(); }); - it("", function () { + it("transitionTo is called with valid route and data", function () { controller.routeToAlertDefinition({context: 'id'}); - expect(App.AlertDefinition.find.calledWith('id')).to.be.true; expect(App.router.transitionTo.calledWith('main.alerts.alertDetails', 'alertDefinition')).to.be.true; }); }); http://git-wip-us.apache.org/repos/asf/ambari/blob/1901b395/ambari-web/test/controllers/main/service/info/summary_test.js ---------------------------------------------------------------------- diff --git a/ambari-web/test/controllers/main/service/info/summary_test.js b/ambari-web/test/controllers/main/service/info/summary_test.js index bec3be1..28c13e3 100644 --- a/ambari-web/test/controllers/main/service/info/summary_test.js +++ b/ambari-web/test/controllers/main/service/info/summary_test.js @@ -304,24 +304,22 @@ App.TestAliases.testAsComputedOr(getController(), 'showTimeRangeControl', ['!isS beforeEach(function () { sinon.stub(App.widgetLayoutMapper, 'map'); sinon.stub(controller, 'propertyDidChange'); - }); - afterEach(function () { - App.widgetLayoutMapper.map.restore(); - controller.propertyDidChange.restore(); - }); - it("", function () { var params = { data: { WidgetLayoutInfo: { widgets: [ - { - id: 1 - } + {id: 1} ] } } }; controller.hideWidgetSuccessCallback({}, {}, params); + }); + afterEach(function () { + App.widgetLayoutMapper.map.restore(); + controller.propertyDidChange.restore(); + }); + it("mapper is called with valid data", function () { expect(App.widgetLayoutMapper.map.calledWith({ items: [{ WidgetLayoutInfo: { @@ -335,6 +333,8 @@ App.TestAliases.testAsComputedOr(getController(), 'showTimeRangeControl', ['!isS } }] })).to.be.true; + }); + it('`widgets` is forced to be recalculated', function () { expect(controller.propertyDidChange.calledWith('widgets')).to.be.true; }); }); http://git-wip-us.apache.org/repos/asf/ambari/blob/1901b395/ambari-web/test/controllers/main/service/item_test.js ---------------------------------------------------------------------- diff --git a/ambari-web/test/controllers/main/service/item_test.js b/ambari-web/test/controllers/main/service/item_test.js index 4934d21..8794661 100644 --- a/ambari-web/test/controllers/main/service/item_test.js +++ b/ambari-web/test/controllers/main/service/item_test.js @@ -234,7 +234,7 @@ describe('App.MainServiceItemController', function () { describe("#startStopPopupPrimary", function () { - + var mainServiceItemController; var tests = [ { data: { @@ -283,16 +283,25 @@ describe('App.MainServiceItemController', function () { }); - tests.forEach(function (test) { - it('', function () { - var mainServiceItemController = App.MainServiceItemController.create({content: {serviceName: test.data.serviceName}}); + tests.forEach(function (test, index) { + + function setupWithTestData() { + mainServiceItemController = App.MainServiceItemController.create({content: {serviceName: test.data.serviceName}}); mainServiceItemController.startStopPopupPrimary(test.data.state, test.data.query); - expect($.ajax.calledOnce).to.equal(true); + } + it('request is sent with valid data ' + (index + 1), function () { + setupWithTestData(); + expect($.ajax.calledOnce).to.equal(true); expect(JSON.parse($.ajax.args[0][0].data).Body.ServiceInfo.state).to.equal(test.request.Body.ServiceInfo.state); expect(JSON.parse($.ajax.args[0][0].data).RequestInfo.context).to.equal(test.request.RequestInfo.context); - + }); + it('isStopDisabled is true ' + (index + 1), function () { + setupWithTestData(); expect(mainServiceItemController.get('isStopDisabled')).to.equal(true); + }); + it('isStartDisabled is true ' + (index + 1), function () { + setupWithTestData(); expect(mainServiceItemController.get('isStartDisabled')).to.equal(true); }); }); http://git-wip-us.apache.org/repos/asf/ambari/blob/1901b395/ambari-web/test/controllers/main/service/manage_config_groups_controller_test.js ---------------------------------------------------------------------- diff --git a/ambari-web/test/controllers/main/service/manage_config_groups_controller_test.js b/ambari-web/test/controllers/main/service/manage_config_groups_controller_test.js index bfc88f4..dffeabb 100644 --- a/ambari-web/test/controllers/main/service/manage_config_groups_controller_test.js +++ b/ambari-web/test/controllers/main/service/manage_config_groups_controller_test.js @@ -26,54 +26,54 @@ describe('App.ManageConfigGroupsController', function() { c = App.ManageConfigGroupsController.create({}); }); - var manageConfigGroupsController = App.ManageConfigGroupsController.create({}); + var manageConfigGroupsController = App.ManageConfigGroupsController.create({}); - describe('#addConfigGroup', function() { - beforeEach(function() { - manageConfigGroupsController.addConfigGroup(); - }); + describe('#addConfigGroup', function() { + beforeEach(function() { + manageConfigGroupsController.addConfigGroup(); + }); - describe("#validate", function() { - it("should display no warning if user inputs valid characters into group name", function() { + describe("#validate", function() { + it("should display no warning if user inputs valid characters into group name", function() { - manageConfigGroupsController.addGroupPopup.set('configGroupName', 'hello'); + manageConfigGroupsController.addGroupPopup.set('configGroupName', 'hello'); - expect(manageConfigGroupsController.addGroupPopup.warningMessage).to.be.empty; - }); + expect(manageConfigGroupsController.addGroupPopup.warningMessage).to.be.empty; + }); - it("should display warning if user inputs invalid characters into group name", function() { - manageConfigGroupsController.addGroupPopup.set('configGroupName', '/{"!@#$%'); + it("should display warning if user inputs invalid characters into group name", function() { + manageConfigGroupsController.addGroupPopup.set('configGroupName', '/{"!@#$%'); - expect(manageConfigGroupsController.addGroupPopup.warningMessage).to.equal('Invalid Group Name. Only alphanumerics, hyphens, spaces and underscores are allowed.'); - }); - }); - }); + expect(manageConfigGroupsController.addGroupPopup.warningMessage).to.equal('Invalid Group Name. Only alphanumerics, hyphens, spaces and underscores are allowed.'); + }); + }); + }); - describe('#renameConfigGroup', function() { - beforeEach(function() { - var configGroup = Ember.Object.create ({ - name: 'name', - description: 'description' - }); + describe('#renameConfigGroup', function() { + beforeEach(function() { + var configGroup = Ember.Object.create ({ + name: 'name', + description: 'description' + }); - manageConfigGroupsController.set('selectedConfigGroup', configGroup); - manageConfigGroupsController.renameConfigGroup(); - }); + manageConfigGroupsController.set('selectedConfigGroup', configGroup); + manageConfigGroupsController.renameConfigGroup(); + }); - describe("#validate", function() { - it("should display no warning if user inputs valid characters into group name", function() { - manageConfigGroupsController.renameGroupPopup.set('configGroupName', 'hello'); + describe("#validate", function() { + it("should display no warning if user inputs valid characters into group name", function() { + manageConfigGroupsController.renameGroupPopup.set('configGroupName', 'hello'); - expect(manageConfigGroupsController.renameGroupPopup.warningMessage).to.be.empty; - }); + expect(manageConfigGroupsController.renameGroupPopup.warningMessage).to.be.empty; + }); - it("should display warning if user inputs invalid characters into group name", function() { - manageConfigGroupsController.renameGroupPopup.set('configGroupName', '/{"!@#$%'); + it("should display warning if user inputs invalid characters into group name", function() { + manageConfigGroupsController.renameGroupPopup.set('configGroupName', '/{"!@#$%'); - expect(manageConfigGroupsController.renameGroupPopup.warningMessage).to.equal('Invalid Group Name. Only alphanumerics, hyphens, spaces and underscores are allowed.'); - }); - }); - }); + expect(manageConfigGroupsController.renameGroupPopup.warningMessage).to.equal('Invalid Group Name. Only alphanumerics, hyphens, spaces and underscores are allowed.'); + }); + }); + }); describe('#addHostsCallback', function() { @@ -102,60 +102,60 @@ describe('App.ManageConfigGroupsController', function() { describe('#isHostsModified', function () { Em.A([ - { - o: { - toClearHosts: [], - toDelete: [], - toSetHosts: [], - toCreate: [] - }, - e: false + { + o: { + toClearHosts: [], + toDelete: [], + toSetHosts: [], + toCreate: [] + }, + e: false + }, + { + o: { + toClearHosts: [{}], + toDelete: [], + toSetHosts: [], + toCreate: [] }, - { - o: { - toClearHosts: [{}], - toDelete: [], - toSetHosts: [], - toCreate: [] - }, - e: true + e: true + }, + { + o: { + toClearHosts: [], + toDelete: [{}], + toSetHosts: [], + toCreate: [] }, - { - o: { - toClearHosts: [], - toDelete: [{}], - toSetHosts: [], - toCreate: [] - }, - e: true + e: true + }, + { + o: { + toClearHosts: [], + toDelete: [], + toSetHosts: [{}], + toCreate: [] }, - { - o: { - toClearHosts: [], - toDelete: [], - toSetHosts: [{}], - toCreate: [] - }, - e: true + e: true + }, + { + o: { + toClearHosts: [], + toDelete: [], + toSetHosts: [], + toCreate: [{}] }, - { - o: { - toClearHosts: [], - toDelete: [], - toSetHosts: [], - toCreate: [{}] - }, - e: true - } + e: true + } ]).forEach(function (test, index) { - it('test #' + index, function () { - c.reopen({ - isLoaded: true, - hostsModifiedConfigGroups: test.o - }); - expect(c.get('isHostsModified')).to.equal(test.e); + it('test #' + index, function () { + c.reopen({ + isLoaded: true, + hostsModifiedConfigGroups: test.o }); + expect(c.get('isHostsModified')).to.equal(test.e); }); + }); }); @@ -206,7 +206,7 @@ describe('App.ManageConfigGroupsController', function() { afterEach(function () { popup.onPrimaryWizard.restore(); }); - it("", function () { + it("onPrimaryWizard is called", function () { popup.onPrimary(); expect(popup.onPrimaryWizard.calledOnce).to.be.true; }); @@ -297,6 +297,8 @@ describe('App.ManageConfigGroupsController', function() { }); sinon.stub(popup, 'updateConfigGroupOnServicePage', Em.K); sinon.stub(popup, 'hide', Em.K); + manageConfigGroupsController.set('hostsModifiedConfigGroups', {toCreate: []}); + popup.onPrimary(); }); afterEach(function () { popup.runCreateCGQueue.restore(); @@ -305,13 +307,19 @@ describe('App.ManageConfigGroupsController', function() { popup.updateConfigGroupOnServicePage.restore(); popup.hide.restore(); }); - it("", function () { - manageConfigGroupsController.set('hostsModifiedConfigGroups', {toCreate: []}); - popup.onPrimary(); + it("runClearCGQueue is called", function () { expect(popup.runClearCGQueue.calledOnce).to.be.true; + }); + it("runModifyCGQueue is called", function () { expect(popup.runModifyCGQueue.calledOnce).to.be.true; + }); + it("runCreateCGQueue is called", function () { expect(popup.runCreateCGQueue.calledOnce).to.be.true; + }); + it("updateConfigGroupOnServicePage is called", function () { expect(popup.updateConfigGroupOnServicePage.calledOnce).to.be.true; + }); + it("hide is called", function () { expect(popup.hide.calledOnce).to.be.true; }); }); @@ -319,18 +327,20 @@ describe('App.ManageConfigGroupsController', function() { beforeEach(function () { sinon.stub(manageConfigGroupsController, 'updateConfigurationGroup', Em.K); sinon.stub(manageConfigGroupsController, 'deleteConfigurationGroup', Em.K); - }); - afterEach(function () { - manageConfigGroupsController.updateConfigurationGroup.restore(); - manageConfigGroupsController.deleteConfigurationGroup.restore(); - }); - it("", function () { popup.runClearCGQueue(Em.K, { initialGroups: [], toClearHosts: [Em.Object.create()], toDelete: [1] }); + }); + afterEach(function () { + manageConfigGroupsController.updateConfigurationGroup.restore(); + manageConfigGroupsController.deleteConfigurationGroup.restore(); + }); + it("updateConfigurationGroup is called once", function () { expect(manageConfigGroupsController.updateConfigurationGroup.calledOnce).to.be.true; + }); + it("deleteConfigurationGroup is called once", function () { expect(manageConfigGroupsController.deleteConfigurationGroup.calledOnce).to.be.true; }); }); @@ -341,7 +351,7 @@ describe('App.ManageConfigGroupsController', function() { afterEach(function () { manageConfigGroupsController.updateConfigurationGroup.restore(); }); - it("", function () { + it("updateConfigurationGroup is called once", function () { popup.runModifyCGQueue(Em.K, {toSetHosts: [1]}); expect(manageConfigGroupsController.updateConfigurationGroup.calledOnce).to.be.true; }); @@ -353,7 +363,7 @@ describe('App.ManageConfigGroupsController', function() { afterEach(function () { manageConfigGroupsController.postNewConfigurationGroup.restore(); }); - it("", function () { + it("postNewConfigurationGroup is called once", function () { popup.runCreateCGQueue(Em.K, {toCreate: [1]}); expect(manageConfigGroupsController.postNewConfigurationGroup.calledOnce).to.be.true; });