You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by on...@apache.org on 2015/12/18 11:04:22 UTC

[3/3] ambari git commit: AMBARI-14356. hostWarningPopupBody_view_test.js unit test failing intermittently (onechiporenko)

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 <on...@apache.org>
Authored: Thu Dec 17 16:05:01 2015 +0200
Committer: Oleg Nechiporenko <on...@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&params&params');
     });
   });
@@ -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;
         });