ambari-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From yus...@apache.org
Subject ambari git commit: Revert "AMBARI-8819 Unit tests for dashboard views. (atkach)" Breaks dashboard and config history. This reverts commit 3d37d5323752075c4f57d387caa6cb3f77e6957f.
Date Sat, 20 Dec 2014 00:35:09 GMT
Repository: ambari
Updated Branches:
  refs/heads/trunk 9ba813875 -> 50819a309


Revert "AMBARI-8819 Unit tests for dashboard views. (atkach)"
Breaks dashboard and config history.
This reverts commit 3d37d5323752075c4f57d387caa6cb3f77e6957f.


Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/50819a30
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/50819a30
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/50819a30

Branch: refs/heads/trunk
Commit: 50819a309b64032a13add9ac2127a27a71ba6740
Parents: 9ba8138
Author: Yusaku Sako <yusaku@hortonworks.com>
Authored: Fri Dec 19 16:34:16 2014 -0800
Committer: Yusaku Sako <yusaku@hortonworks.com>
Committed: Fri Dec 19 16:35:02 2014 -0800

----------------------------------------------------------------------
 ambari-web/app/messages.js                      |   2 -
 .../views/main/dashboard/config_history_view.js |  25 +-
 ambari-web/app/views/main/dashboard/widget.js   | 280 +++++----------
 ambari-web/app/views/main/dashboard/widgets.js  | 267 +++++++-------
 .../main/dashboard/config_history_view_test.js  | 215 +----------
 .../test/views/main/dashboard/widget_test.js    | 346 +-----------------
 .../test/views/main/dashboard/widgets_test.js   | 354 ++-----------------
 7 files changed, 274 insertions(+), 1215 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/50819a30/ambari-web/app/messages.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/messages.js b/ambari-web/app/messages.js
index 4ea3062..e341751 100644
--- a/ambari-web/app/messages.js
+++ b/ambari-web/app/messages.js
@@ -2223,8 +2223,6 @@ Em.I18n.translations = {
   'dashboard.widgets.NodeManagersLive': 'NodeManagers Live',
   'dashboard.widgets.YARNMemory': 'YARN Memory',
   'dashboard.widgets.YARNLinks': 'YARN Links',
-  'dashboard.widgets.error.invalid': 'Invalid! Enter a number between 0 - {0}',
-  'dashboard.widgets.error.smaller': 'Threshold 1 should be smaller than threshold 2!',
 
   'dashboard': {
     'widgets': {

http://git-wip-us.apache.org/repos/asf/ambari/blob/50819a30/ambari-web/app/views/main/dashboard/config_history_view.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/main/dashboard/config_history_view.js b/ambari-web/app/views/main/dashboard/config_history_view.js
index bb7f8ae..354cae0 100644
--- a/ambari-web/app/views/main/dashboard/config_history_view.js
+++ b/ambari-web/app/views/main/dashboard/config_history_view.js
@@ -24,11 +24,6 @@ App.MainConfigHistoryView = App.TableView.extend(App.TableServerViewMixin, {
   templateName: require('templates/main/dashboard/config_history'),
 
   controllerBinding: 'App.router.mainConfigHistoryController',
-
-  /**
-   * @type {boolean}
-   * @default false
-   */
   filteringComplete: false,
   isInitialRendering: true,
 
@@ -177,7 +172,7 @@ App.MainConfigHistoryView = App.TableView.extend(App.TableServerViewMixin, {
     tagName: 'tr',
     showLessNotes: true,
     toggleShowLessStatus: function () {
-      this.toggleProperty('showLessNotes');
+      this.set('showLessNotes', !this.get('showLessNotes'));
     },
     didInsertElement: function () {
       App.tooltip(this.$("[rel='Tooltip']"));
@@ -190,18 +185,12 @@ App.MainConfigHistoryView = App.TableView.extend(App.TableServerViewMixin, {
   refresh: function () {
     var self = this;
     this.set('filteringComplete', false);
-    this.get('controller').load().done(this.refreshDone);
-  },
-
-  /**
-   * callback executed after refresh call done
-   * @method refreshDone
-   */
-  refreshDone: function () {
-    this.set('isInitialRendering', false);
-    this.set('filteringComplete', true);
-    this.propertyDidChange('pageContent');
-    this.set('controller.resetStartIndex', false);
+    this.get('controller').load().done(function () {
+      self.set('isInitialRendering', false);
+      self.set('filteringComplete', true);
+      self.propertyDidChange('pageContent');
+      self.set('controller.resetStartIndex', false);
+    });
   },
 
   /**

http://git-wip-us.apache.org/repos/asf/ambari/blob/50819a30/ambari-web/app/views/main/dashboard/widget.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/main/dashboard/widget.js b/ambari-web/app/views/main/dashboard/widget.js
index c7bcd7c..95fc5fb 100644
--- a/ambari-web/app/views/main/dashboard/widget.js
+++ b/ambari-web/app/views/main/dashboard/widget.js
@@ -20,10 +20,6 @@ var App = require('app');
 
 App.DashboardWidgetView = Em.View.extend({
 
-  /**
-   * @type {string}
-   * @default null
-   */
   title: null,
   templateName: null, // each has specific template
 
@@ -31,209 +27,120 @@ App.DashboardWidgetView = Em.View.extend({
    * Setup model for widget by `model_type`. Usually `model_type` is a lowercase service name,
    * for example `hdfs`, `yarn`, etc. You need to set `model_type` in extended object View, for example
    * look App.DataNodeUpView.
-   * @type {object} - model that set up in App.MainDashboardView.setWidgetsDataModel()
+   * @return {Object} - model that set up in App.MainDashboardView.setWidgetsDataModel()
    */
   model : function () {
     if (!this.get('model_type')) return {};
     return this.get('parentView').get(this.get('model_type') + '_model');
-  }.property(),
-
-  /**
-   * id 1-10 used to identify
-   * @type {number}
-   * @default null
-   */
-  id: null,
+  }.property(), //data bind from parent view
 
-  /**
-   * html id bind to view-class: widget-(1)
-   * used by re-sort
-   * @type {string}
-   */
-  viewID: function () {
+  id: null, // id 1-10 used to identify
+  viewID: function(){ // used by re-sort
     return 'widget-' + this.get('id');
-  }.property('id'),
+  }.property('id'),  //html id bind to view-class: widget-(1)
   attributeBindings: ['viewID'],
 
-  /**
-   * @type {boolean}
-   */
   isPieChart: false,
-
-  /**
-   * @type {boolean}
-   */
   isText: false,
-
-  /**
-   * @type {boolean}
-   */
   isProgressBar: false,
-
-  /**
-   * @type {boolean}
-   */
   isLinks: false,
-
-  /**
-   * widget content pieChart/ text/ progress bar/links/ metrics. etc
-   * @type {Array}
-   * @default null
-   */
-  content: null,
-
-  /**
-   * more info details
-   * @type {Array}
-   */
-  hiddenInfo: [],
-
-  /**
-   * @type {string}
-   */
+  content: null, // widget content pieChart/ text/ progress bar/links/ metrics. etc
+  hiddenInfo: null, // more info details
   hiddenInfoClass: "hidden-info-two-line",
 
-  /**
-   * @type {number}
-   * @default null
-   */
-  thresh1: null,
-
-  /**
-   * @type {number}
-   * @default null
-   */
-  thresh2: null,
-
-  /**
-   * @type {Em.Object}
-   * @class
-   */
-  widgetConfig: Ember.Object.extend({
-    thresh1: '',
-    thresh2: '',
-    hintInfo: function () {
-      return Em.I18n.t('dashboard.widgets.hintInfo.common').format(this.get('maxValue'));
-    }.property('maxValue'),
-    isThresh1Error: false,
-    isThresh2Error: false,
-    errorMessage1: "",
-    errorMessage2: "",
-    maxValue: 0,
-    observeThresh1Value: function () {
-      var thresh1 = this.get('thresh1');
-      var thresh2 = this.get('thresh2');
-      var maxValue = this.get('maxValue');
-
-      if (thresh1.trim() != "") {
-        if (isNaN(thresh1) || thresh1 > maxValue || thresh1 < 0) {
-          this.set('isThresh1Error', true);
-          this.set('errorMessage1', Em.I18n.t('dashboard.widgets.error.invalid').format(maxValue));
-        } else if (this.get('isThresh2Error') === false && parseFloat(thresh2) <= parseFloat(thresh1)) {
-          this.set('isThresh1Error', true);
-          this.set('errorMessage1', Em.I18n.t('dashboard.widgets.error.smaller'));
-        } else {
-          this.set('isThresh1Error', false);
-          this.set('errorMessage1', '');
-        }
-      } else {
-        this.set('isThresh1Error', true);
-        this.set('errorMessage1', Em.I18n.t('admin.users.editError.requiredField'));
-      }
-      this.updateSlider();
-    }.observes('thresh1', 'maxValue'),
-    observeThresh2Value: function () {
-      var thresh2 = this.get('thresh2');
-      var maxValue = this.get('maxValue');
-
-      if (thresh2.trim() != "") {
-        if (isNaN(thresh2) || thresh2 > maxValue || thresh2 < 0) {
-          this.set('isThresh2Error', true);
-          this.set('errorMessage2', Em.I18n.t('dashboard.widgets.error.invalid').format(maxValue));
-        } else {
-          this.set('isThresh2Error', false);
-          this.set('errorMessage2', '');
-        }
-      } else {
-        this.set('isThresh2Error', true);
-        this.set('errorMessage2', Em.I18n.t('admin.users.editError.requiredField'));
-      }
-      this.updateSlider();
-    }.observes('thresh2', 'maxValue'),
-    updateSlider: function () {
-      var thresh1 = this.get('thresh1');
-      var thresh2 = this.get('thresh2');
-      // update the slider handles and color
-      if (this.get('isThresh1Error') === false && this.get('isThresh2Error') === false) {
-        $("#slider-range").slider('values', 0, parseFloat(thresh1));
-        $("#slider-range").slider('values', 1, parseFloat(thresh2));
-      }
-    }
-  }),
+  thresh1: null, //@type {Number}
+  thresh2: null, //@type {Number}
 
   didInsertElement: function () {
     App.tooltip(this.$("[rel='ZoomInTooltip']"), {placement : 'left'});
   },
 
-  /**
-   * delete widget
-   * @param {object} event
-   */
   deleteWidget: function (event) {
     var parent = this.get('parentView');
-
+    var self = this;
     if (App.get('testMode')) {
       //update view on dashboard
-      var objClass = parent.widgetsMapper(this.get('id'));
+      var objClass = parent.widgetsMapper(this.id);
       parent.get('visibleWidgets').removeObject(objClass);
       parent.get('hiddenWidgets').pushObject(Em.Object.create({displayName: this.get('title'), id: this.get('id'), checked: false}));
     } else {
       //reconstruct new persist value then post in persist
-      parent.getUserPref(parent.get('persistKey')).complete(this.deleteWidgetComplete);
+      parent.getUserPref(parent.get('persistKey')).complete(function(){
+        var oldValue = parent.get('currentPrefObject');
+        var deletedId = self.get('id');
+        var newValue = Em.Object.create({
+          dashboardVersion: oldValue.dashboardVersion,
+          visible: [],
+          hidden: oldValue.hidden,
+          threshold: oldValue.threshold
+        });
+        for (var i = 0; i <= oldValue.visible.length - 1; i++) {
+          if (oldValue.visible[i] != deletedId) {
+            newValue.visible.push(oldValue.visible[i]);
+          }
+        }
+        newValue.hidden.push([deletedId, self.get('title')]);
+        parent.postUserPref(parent.get('persistKey'), newValue);
+        parent.translateToReal(newValue);
+      });
     }
   },
 
-  /**
-   * delete widget complete callback
-   */
-  deleteWidgetComplete: function () {
-    var parent = this.get('parentView');
-    var oldValue = parent.get('currentPrefObject');
-    var deletedId = this.get('id');
-    var newValue = Em.Object.create({
-      dashboardVersion: oldValue.dashboardVersion,
-      visible: oldValue.visible.slice(0).without(deletedId),
-      hidden: oldValue.hidden,
-      threshold: oldValue.threshold
-    });
-    newValue.hidden.push([deletedId, this.get('title')]);
-    parent.postUserPref(parent.get('persistKey'), newValue);
-    parent.translateToReal(newValue);
-  },
-
-  /**
-   * edit widget
-   * @param {object} event
-   */
   editWidget: function (event) {
-    var configObj = this.get('widgetConfig').create({
-      thresh1: this.get('thresh1') + '',
-      thresh2: this.get('thresh2') + '',
-      maxValue: parseFloat(this.get('maxValue'))
-    });
-    this.showEditDialog(configObj)
-  },
-
-  /**
-   *  show edit dialog
-   * @param {Em.Object} configObj
-   * @returns {App.ModalPopup}
-   */
-  showEditDialog: function (configObj) {
     var self = this;
-    var maxValue = this.get('maxValue');
+    var max_tmp =  parseFloat(self.get('maxValue'));
+    var configObj = Ember.Object.create({
+      thresh1: self.get('thresh1') + '',
+      thresh2: self.get('thresh2') + '',
+      hintInfo: Em.I18n.t('dashboard.widgets.hintInfo.common').format(max_tmp),
+      isThresh1Error: false,
+      isThresh2Error: false,
+      errorMessage1: "",
+      errorMessage2: "",
+      maxValue: max_tmp,
+      observeNewThresholdValue: function () {
+        var thresh1 = this.get('thresh1');
+        var thresh2 = this.get('thresh2');
+        if (thresh1.trim() != "") {
+          if (isNaN(thresh1) || thresh1 > max_tmp || thresh1 < 0) {
+            this.set('isThresh1Error', true);
+            this.set('errorMessage1', 'Invalid! Enter a number between 0 - ' + max_tmp);
+          } else if (this.get('isThresh2Error') === false && parseFloat(thresh2)<= parseFloat(thresh1)) {
+            this.set('isThresh1Error', true);
+            this.set('errorMessage1', 'Threshold 1 should be smaller than threshold 2 !');
+          } else {
+            this.set('isThresh1Error', false);
+            this.set('errorMessage1', '');
+          }
+        } else {
+          this.set('isThresh1Error', true);
+          this.set('errorMessage1', 'This is required');
+        }
+
+        if (thresh2.trim() != "") {
+          if (isNaN(thresh2) || thresh2 > max_tmp || thresh2 < 0) {
+            this.set('isThresh2Error', true);
+            this.set('errorMessage2', 'Invalid! Enter a number between 0 - ' + max_tmp);
+          } else {
+            this.set('isThresh2Error', false);
+            this.set('errorMessage2', '');
+          }
+        } else {
+          this.set('isThresh2Error', true);
+          this.set('errorMessage2', 'This is required');
+        }
+
+        // update the slider handles and color
+        if (this.get('isThresh1Error') === false && this.get('isThresh2Error') === false) {
+          $("#slider-range").slider('values', 0 , parseFloat(thresh1));
+          $("#slider-range").slider('values', 1 , parseFloat(thresh2));
+        }
+      }.observes('thresh1', 'thresh2')
 
-    return App.ModalPopup.show({
+    });
+
+    var browserVersion = this.getInternetExplorerVersion();
+    App.ModalPopup.show({
       header: Em.I18n.t('dashboard.widgets.popupHeader'),
       classNames: [ 'sixty-percent-width-modal-edit-widget' ],
       bodyClass: Ember.View.extend({
@@ -241,11 +148,11 @@ App.DashboardWidgetView = Em.View.extend({
         configPropertyObj: configObj
       }),
       primary: Em.I18n.t('common.apply'),
-      onPrimary: function () {
+      onPrimary: function() {
         configObj.observeNewThresholdValue();
         if (!configObj.isThresh1Error && !configObj.isThresh2Error) {
-          self.set('thresh1', parseFloat(configObj.get('thresh1')));
-          self.set('thresh2', parseFloat(configObj.get('thresh2')));
+          self.set('thresh1', parseFloat(configObj.get('thresh1')) );
+          self.set('thresh2', parseFloat(configObj.get('thresh2')) );
 
           if (!App.get('testMode')) {
             // save to persist
@@ -262,7 +169,6 @@ App.DashboardWidgetView = Em.View.extend({
       },
 
       didInsertElement: function () {
-        var browserVersion = this.getInternetExplorerVersion();
         var handlers = [configObj.get('thresh1'), configObj.get('thresh2')];
         var colors = ['#95A800', '#FF8E00', '#B80000']; //color green, orange ,red
 
@@ -272,7 +178,7 @@ App.DashboardWidgetView = Em.View.extend({
           $("#slider-range").slider({
             range: true,
             min: 0,
-            max: maxValue,
+            max: max_tmp,
             values: handlers,
             create: function (event, ui) {
               updateColors(handlers);
@@ -290,8 +196,8 @@ App.DashboardWidgetView = Em.View.extend({
           function updateColors(handlers) {
             var colorstops = colors[0] + ", "; // start with the first color
             for (var i = 0; i < handlers.length; i++) {
-              colorstops += colors[i] + " " + handlers[i] * 100 / maxValue + "%,";
-              colorstops += colors[i + 1] + " " + handlers[i] * 100 / maxValue + "%,";
+              colorstops += colors[i] + " " + handlers[i]*100/max_tmp + "%,";
+              colorstops += colors[i+1] + " " + handlers[i]*100/max_tmp + "%,";
             }
             colorstops += colors[colors.length - 1];
             var sliderElement = $('#slider-range');
@@ -313,21 +219,18 @@ App.DashboardWidgetView = Em.View.extend({
     });
   },
 
-  /**
-   * @returns {number}
-   */
-  getInternetExplorerVersion: function () {
+  getInternetExplorerVersion: function (){
     var rv = -1; //return -1 for other browsers
     if (navigator.appName == 'Microsoft Internet Explorer') {
       var ua = navigator.userAgent;
-      var re = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");
+      var re  = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");
       if (re.exec(ua) != null)
-        rv = parseFloat(RegExp.$1); // IE version 1-10
+        rv = parseFloat( RegExp.$1 ); // IE version 1-10
     }
     var isFirefox = typeof InstallTrigger !== 'undefined';   // Firefox 1.0+
     if (isFirefox) {
       return -2;
-    } else {
+    }else{
       return rv;
     }
   },
@@ -336,7 +239,6 @@ App.DashboardWidgetView = Em.View.extend({
    * for widgets has hidden info(hover info),
    * calculate the hover content top number
    * based on how long the hiddenInfo is
-   * @returns {string}
    */
   hoverContentTopClass: function () {
     var lineNum = this.get('hiddenInfo.length');

http://git-wip-us.apache.org/repos/asf/ambari/blob/50819a30/ambari-web/app/views/main/dashboard/widgets.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/main/dashboard/widgets.js b/ambari-web/app/views/main/dashboard/widgets.js
index 74e05a5..107be63 100644
--- a/ambari-web/app/views/main/dashboard/widgets.js
+++ b/ambari-web/app/views/main/dashboard/widgets.js
@@ -23,13 +23,13 @@ App.MainDashboardWidgetsView = Em.View.extend(App.UserPref, App.LocalStorage, {
 
   name: 'mainDashboardWidgetsView',
 
-  templateName: require('templates/main/dashboard/widgets'),
+  templateName:require('templates/main/dashboard/widgets'),
 
-  didInsertElement: function () {
+  didInsertElement:function () {
     this.setWidgetsDataModel();
     this.setInitPrefObject();
     this.setOnLoadVisibleWidgets();
-    this.set('isDataLoaded', true);
+    this.set('isDataLoaded',true);
     Em.run.next(this, 'makeSortable');
   },
 
@@ -37,16 +37,16 @@ App.MainDashboardWidgetsView = Em.View.extend(App.UserPref, App.LocalStorage, {
    * List of services
    * @type {Ember.Enumerable}
    */
-  content: [],
+  content:[],
 
   /**
-   * @type {boolean}
+   * @type {bool}
    */
   isDataLoaded: false,
 
   /**
    * Define if some widget is currently moving
-   * @type {boolean}
+   * @type {bool}
    */
   isMoving: false,
 
@@ -55,7 +55,7 @@ App.MainDashboardWidgetsView = Em.View.extend(App.UserPref, App.LocalStorage, {
    */
   makeSortable: function () {
     var self = this;
-    $("#sortable").sortable({
+    $( "#sortable" ).sortable({
       items: "> div",
       //placeholder: "sortable-placeholder",
       cursor: "move",
@@ -85,10 +85,10 @@ App.MainDashboardWidgetsView = Em.View.extend(App.UserPref, App.LocalStorage, {
           });
         }
       },
-      activate: function (event, ui) {
+      activate: function(event, ui) {
         self.set('isMoving', true);
       },
-      deactivate: function (event, ui) {
+      deactivate: function(event, ui) {
         self.set('isMoving', false);
       }
     }).disableSelection();
@@ -98,16 +98,31 @@ App.MainDashboardWidgetsView = Em.View.extend(App.UserPref, App.LocalStorage, {
    * Set Service model values
    */
   setWidgetsDataModel: function () {
-    if (App.get('services.hostMetrics').length > 0) {
-      this.set('host_metrics_model', App.get('services.hostMetrics'));
+    var services = App.Service.find();
+    var self = this;
+    if(App.get('services.hostMetrics').length > 0) {
+      self.set('host_metrics_model', App.get('services.hostMetrics'));
     }
-    App.Service.find().forEach(function (item) {
-      var extendedModel = App.Service.extendedModel[item.get('serviceName')];
-      var key = item.get('serviceName').toLowerCase() + '_model';
-      if (extendedModel && App[extendedModel].find(item.get('id'))) {
-        this.set(key, App[extendedModel].find(item.get('id')));
-      } else {
-        this.set(key, item);
+    services.forEach(function (item) {
+      switch (item.get('serviceName')) {
+        case "HDFS":
+          self.set('hdfs_model',  App.HDFSService.find(item.get('id')) || item);
+          break;
+        case "YARN":
+          self.set('yarn_model', App.YARNService.find(item.get('id')) || item);
+          break;
+        case "MAPREDUCE":
+          self.set('mapreduce_model', App.MapReduceService.find(item.get('id')) || item);
+          break;
+        case "HBASE":
+          self.set('hbase_model', App.HBaseService.find(item.get('id')) || item);
+          break;
+        case "STORM":
+          self.set('storm_model', item);
+          break;
+        case "FLUME":
+          self.set('flume_model', item);
+          break;
       }
     }, this);
   },
@@ -115,7 +130,7 @@ App.MainDashboardWidgetsView = Em.View.extend(App.UserPref, App.LocalStorage, {
   /**
    * Load widget statuses to <code>initPrefObject</code>
    */
-  setInitPrefObject: function () {
+  setInitPrefObject: function() {
     //in case of some service not installed
     var visibleFull = [
       '2', '4', '8', '10',
@@ -123,56 +138,54 @@ App.MainDashboardWidgetsView = Em.View.extend(App.UserPref, App.LocalStorage, {
       '18', '1', '6', '5', '9',
       '3', '7', '15', '16', '20',
       '19', '21', '23',
-      '24', '25', '26', '27', '30', // all yarn
+      '24', '25', '26', '27', '30',// all yarn
       '28', // storm
       '29' // flume
     ]; // all in order
-    var hiddenFull = [
-      ['22', 'Region In Transition']
-    ];
+    var hiddenFull = [['22','Region In Transition']];
 
     // Display widgets for host metrics if the stack definition has a host metrics service to display it.
     if (this.get('host_metrics_model') == null) {
       var hostMetrics = ['11', '12', '13', '14'];
-      hostMetrics.forEach(function (item) {
+      hostMetrics.forEach ( function (item) {
         visibleFull = visibleFull.without(item);
       }, this);
     }
 
     if (this.get('hdfs_model') == null) {
-      var hdfs = ['1', '2', '3', '4', '5', '15', '17'];
-      hdfs.forEach(function (item) {
+      var hdfs= ['1', '2', '3', '4', '5', '15', '17'];
+      hdfs.forEach ( function (item) {
         visibleFull = visibleFull.without(item);
       }, this);
     }
     if (this.get('mapreduce_model') == null) {
       var map = ['6', '7', '8', '9', '10', '16', '18'];
-      map.forEach(function (item) {
+      map.forEach ( function (item) {
         visibleFull = visibleFull.without(item);
       }, this);
     }
     if (this.get('hbase_model') == null) {
       var hbase = ['19', '20', '21', '23'];
-      hbase.forEach(function (item) {
+      hbase.forEach ( function (item) {
         visibleFull = visibleFull.without(item);
       }, this);
       hiddenFull = [];
     }
     if (this.get('yarn_model') == null) {
       var yarn = ['24', '25', '26', '27', '30'];
-      yarn.forEach(function (item) {
+      yarn.forEach ( function (item) {
         visibleFull = visibleFull.without(item);
       }, this);
     }
     if (this.get('storm_model') == null) {
       var storm = ['28'];
-      storm.forEach(function (item) {
+      storm.forEach(function(item) {
         visibleFull = visibleFull.without(item);
       }, this);
     }
     if (this.get('flume_model') == null) {
       var flume = ['29'];
-      flume.forEach(function (item) {
+      flume.forEach(function(item) {
         visibleFull = visibleFull.without(item);
       }, this);
     }
@@ -212,58 +225,57 @@ App.MainDashboardWidgetsView = Em.View.extend(App.UserPref, App.LocalStorage, {
   /**
    * Submenu view for New Dashboard style
    * @type {Ember.View}
-   * @class
    */
   plusButtonFilterView: Ember.View.extend({
-    templateName: require('templates/main/dashboard/plus_button_filter'),
-    hiddenWidgetsBinding: 'parentView.hiddenWidgets',
-    visibleWidgetsBinding: 'parentView.visibleWidgets',
-    valueBinding: '',
-    widgetCheckbox: Em.Checkbox.extend({
-      didInsertElement: function () {
-        $('.checkbox').click(function (event) {
-          event.stopPropagation();
-        });
-      }
-    }),
-    closeFilter: Em.K,
-    applyFilter: function () {
-      var parent = this.get('parentView');
-      var hiddenWidgets = this.get('hiddenWidgets');
-      var checkedWidgets = hiddenWidgets.filterProperty('checked', true);
-
-      if (App.get('testMode')) {
-        var visibleWidgets = this.get('visibleWidgets');
-        checkedWidgets.forEach(function (item) {
-          var newObj = parent.widgetsMapper(item.id);
-          visibleWidgets.pushObject(newObj);
-          hiddenWidgets.removeObject(item);
-        }, this);
-      } else {
-        //save in persist
-        parent.getUserPref(parent.get('persistKey')).complete(this.applyFilterComplete);
+      templateName: require('templates/main/dashboard/plus_button_filter'),
+      hiddenWidgetsBinding: 'parentView.hiddenWidgets',
+      visibleWidgetsBinding: 'parentView.visibleWidgets',
+      valueBinding: '',
+      widgetCheckbox: Em.Checkbox.extend({
+        didInsertElement: function() {
+          $('.checkbox').click(function(event) {
+            event.stopPropagation();
+          });
+        }
+      }),
+      closeFilter:function () {
+      },
+      applyFilter:function() {
+        this.closeFilter();
+        var parent = this.get('parentView');
+        var hiddenWidgets = this.get('hiddenWidgets');
+        var checkedWidgets = hiddenWidgets.filterProperty('checked', true);
+
+        if (App.get('testMode')) {
+          var visibleWidgets = this.get('visibleWidgets');
+          checkedWidgets.forEach(function(item){
+            var newObj = parent.widgetsMapper(item.id);
+            visibleWidgets.pushObject(newObj);
+            hiddenWidgets.removeObject(item);
+          }, this);
+        } else {
+          //save in persist
+          parent.getUserPref(parent.get('persistKey')).complete(function () {
+            var oldValue = parent.get('currentPrefObject') || parent.getDbProperty(parent.get('persistKey'));
+            var newValue = Em.Object.create({
+              dashboardVersion: oldValue.dashboardVersion,
+              visible: oldValue.visible,
+              hidden: [],
+              threshold: oldValue.threshold
+            });
+            checkedWidgets.forEach(function (item) {
+              newValue.visible.push(item.id);
+              hiddenWidgets.removeObject(item);
+            }, this);
+            hiddenWidgets.forEach(function (item) {
+              newValue.hidden.push([item.id, item.displayName]);
+            }, this);
+            parent.postUserPref(parent.get('persistKey'), newValue);
+            parent.setDBProperty(parent.get('persistKey'), newValue);
+            parent.translateToReal(newValue);
+          });
+        }
       }
-    },
-    applyFilterComplete: function () {
-      var parent = this.get('parentView'),
-        hiddenWidgets = this.get('hiddenWidgets'),
-        oldValue = parent.get('currentPrefObject'),
-        newValue = Em.Object.create({
-          dashboardVersion: oldValue.dashboardVersion,
-          visible: oldValue.visible,
-          hidden: [],
-          threshold: oldValue.threshold
-        });
-      hiddenWidgets.filterProperty('checked').forEach(function (item) {
-        newValue.visible.push(item.id);
-        hiddenWidgets.removeObject(item);
-      }, this);
-      hiddenWidgets.forEach(function (item) {
-        newValue.hidden.push([item.id, item.displayName]);
-      }, this);
-      parent.postUserPref(parent.get('persistKey'), newValue);
-      parent.translateToReal(newValue);
-    }
   }),
 
   /**
@@ -275,12 +287,15 @@ App.MainDashboardWidgetsView = Em.View.extend(App.UserPref, App.LocalStorage, {
     var hidden = value.hidden;
     var threshold = value.threshold;
 
-    if (version == 'new') {
+    if (version == 'classic') {
+      this.set('isClassicDashboard', true);
+    } else if (version == 'new') {
+      this.set('isClassicDashboard', false);
       var visibleWidgets = [];
       var hiddenWidgets = [];
       // re-construct visibleWidgets and hiddenWidgets
-      for (var i = 0; i < visible.length; i++) {
-        var id = visible[i];
+      for (var j = 0; j <= visible.length -1; j++) {
+        var id = visible[j];
         var widgetClass = this.widgetsMapper(id);
         //override with new threshold
         if (threshold[id].length > 0) {
@@ -291,9 +306,10 @@ App.MainDashboardWidgetsView = Em.View.extend(App.UserPref, App.LocalStorage, {
         }
         visibleWidgets.pushObject(widgetClass);
       }
-      for (var j = 0; j < hidden.length; j++) {
+      for (var j = 0; j <= hidden.length -1; j++) {
+        var id = hidden[j][0];
         var title = hidden[j][1];
-        hiddenWidgets.pushObject(Em.Object.create({displayName: title, id: hidden[j][0], checked: false}));
+        hiddenWidgets.pushObject(Em.Object.create({displayName:title , id: id, checked: false}));
       }
       this.set('visibleWidgets', visibleWidgets);
       this.set('hiddenWidgets', hiddenWidgets);
@@ -304,33 +320,29 @@ App.MainDashboardWidgetsView = Em.View.extend(App.UserPref, App.LocalStorage, {
    * Set visibility-status for widgets
    */
   setOnLoadVisibleWidgets: function () {
+    var self = this;
     if (App.get('testMode')) {
       this.translateToReal(this.get('initPrefObject'));
     } else {
       // called when first load/refresh/jump back page
-      this.getUserPref(this.get('persistKey')).complete(this.setOnLoadVisibleWidgetsComplete);
-    }
-  },
-
-  /**
-   * complete load of visible widgets
-   */
-  setOnLoadVisibleWidgetsComplete: function () {
-    var currentPrefObject = this.get('currentPrefObject') || this.getDBProperty(this.get('persistKey'));
-    if (currentPrefObject) { // fit for no dashboard version
-      if (!currentPrefObject.dashboardVersion) {
-        currentPrefObject.dashboardVersion = 'new';
-        this.postUserPref(this.get('persistKey'), currentPrefObject);
-        this.setDBProperty(this.get('persistKey'), currentPrefObject);
-      }
-      this.set('currentPrefObject', this.checkServicesChange(currentPrefObject));
-      this.translateToReal(this.get('currentPrefObject'));
-    }
-    else {
-      // post persist then translate init object
-      this.postUserPref(this.get('persistKey'), this.get('initPrefObject'));
-      this.setDBProperty(this.get('persistKey'), this.get('initPrefObject'));
-      this.translateToReal(this.get('initPrefObject'));
+      self.getUserPref(this.get('persistKey')).complete(function () {
+        var currentPrefObject = self.get('currentPrefObject') || self.getDBProperty(self.get('persistKey'));
+        if (currentPrefObject) { // fit for no dashboard version
+          if (!currentPrefObject.dashboardVersion) {
+            currentPrefObject.dashboardVersion = 'new';
+            self.postUserPref(self.get('persistKey'), currentPrefObject);
+            self.setDBProperty(self.get('persistKey'), currentPrefObject);
+          }
+          self.set('currentPrefObject', self.checkServicesChange(currentPrefObject));
+          self.translateToReal(self.get('currentPrefObject'));
+        }
+        else {
+          // post persist then translate init object
+          self.postUserPref(self.get('persistKey'), self.get('initPrefObject'));
+          self.setDBProperty(self.get('persistKey'), self.get('initPrefObject'));
+          self.translateToReal(self.get('initPrefObject'));
+        }
+      });
     }
   },
 
@@ -342,7 +354,7 @@ App.MainDashboardWidgetsView = Em.View.extend(App.UserPref, App.LocalStorage, {
    */
   removeWidget: function (value, widget) {
     value.visible = value.visible.without(widget);
-    for (var j = 0; j < value.hidden.length; j++) {
+    for (var j = 0; j <= value.hidden.length -1; j++) {
       if (value.hidden[j][0] == widget) {
         value.hidden.splice(j, 1);
       }
@@ -357,9 +369,9 @@ App.MainDashboardWidgetsView = Em.View.extend(App.UserPref, App.LocalStorage, {
    * @returns {bool}
    */
   containsWidget: function (value, widget) {
-    var flag = value.visible.contains(widget);
-    for (var j = 0; j < value.hidden.length; j++) {
-      if (!flag && value.hidden[j][0] == widget) {
+    var flag = value.visible.contains (widget);
+    for (var j = 0; j <= value.hidden.length -1; j++) {
+      if ( !flag && value.hidden[j][0] == widget) {
         flag = true;
         break;
       }
@@ -381,7 +393,7 @@ App.MainDashboardWidgetsView = Em.View.extend(App.UserPref, App.LocalStorage, {
     // check each service, find out the newly added service and already deleted service
     if (this.get('hdfs_model') != null) {
       var hdfs = ['1', '2', '3', '4', '5', '15', '17'];
-      hdfs.forEach(function (item) {
+      hdfs.forEach ( function (item) {
         toDelete = self.removeWidget(toDelete, item);
       }, this);
     }
@@ -391,7 +403,7 @@ App.MainDashboardWidgetsView = Em.View.extend(App.UserPref, App.LocalStorage, {
       var hostMetrics = ['11', '12', '13', '14'];
       var flag = self.containsWidget(toDelete, hostMetrics[0]);
       if (flag) {
-        hostMetrics.forEach(function (item) {
+        hostMetrics.forEach ( function (item) {
           toDelete = self.removeWidget(toDelete, item);
         }, this);
       } else {
@@ -403,7 +415,7 @@ App.MainDashboardWidgetsView = Em.View.extend(App.UserPref, App.LocalStorage, {
       var map = ['6', '7', '8', '9', '10', '16', '18'];
       var flag = self.containsWidget(toDelete, map[0]);
       if (flag) {
-        map.forEach(function (item) {
+        map.forEach ( function (item) {
           toDelete = self.removeWidget(toDelete, item);
         }, this);
       } else {
@@ -414,7 +426,7 @@ App.MainDashboardWidgetsView = Em.View.extend(App.UserPref, App.LocalStorage, {
       var hbase = ['19', '20', '21', '22', '23'];
       var flag = self.containsWidget(toDelete, hbase[0]);
       if (flag) {
-        hbase.forEach(function (item) {
+        hbase.forEach ( function (item) {
           toDelete = self.removeWidget(toDelete, item);
         }, this);
       } else {
@@ -425,7 +437,7 @@ App.MainDashboardWidgetsView = Em.View.extend(App.UserPref, App.LocalStorage, {
       var yarn = ['24', '25', '26', '27', '30'];
       var flag = self.containsWidget(toDelete, yarn[0]);
       if (flag) {
-        yarn.forEach(function (item) {
+        yarn.forEach ( function (item) {
           toDelete = self.removeWidget(toDelete, item);
         }, this);
       } else {
@@ -436,7 +448,7 @@ App.MainDashboardWidgetsView = Em.View.extend(App.UserPref, App.LocalStorage, {
       var storm = ['28'];
       var flag = self.containsWidget(toDelete, storm[0]);
       if (flag) {
-        storm.forEach(function (item) {
+        storm.forEach ( function (item) {
           toDelete = self.removeWidget(toDelete, item);
         }, this);
       } else {
@@ -447,7 +459,7 @@ App.MainDashboardWidgetsView = Em.View.extend(App.UserPref, App.LocalStorage, {
       var flume = ['29'];
       var flag = self.containsWidget(toDelete, flume[0]);
       if (flag) {
-        flume.forEach(function (item) {
+        flume.forEach ( function (item) {
           toDelete = self.removeWidget(toDelete, item);
         }, this);
       } else {
@@ -456,10 +468,10 @@ App.MainDashboardWidgetsView = Em.View.extend(App.UserPref, App.LocalStorage, {
     }
     var value = currentPrefObject;
     if (toDelete.visible.length || toDelete.hidden.length) {
-      toDelete.visible.forEach(function (item) {
+      toDelete.visible.forEach ( function (item) {
         value = self.removeWidget(value, item);
       }, this);
-      toDelete.hidden.forEach(function (item) {
+      toDelete.hidden.forEach ( function (item) {
         value = self.removeWidget(value, item[0]);
       }, this);
     }
@@ -467,7 +479,7 @@ App.MainDashboardWidgetsView = Em.View.extend(App.UserPref, App.LocalStorage, {
       value.visible = value.visible.concat(toAdd);
       var allThreshold = this.get('initPrefObject').threshold;
       // add new threshold OR override with default value
-      toAdd.forEach(function (item) {
+      toAdd.forEach ( function (item) {
         value.threshold[item] = allThreshold[item];
       }, this);
     }
@@ -528,7 +540,7 @@ App.MainDashboardWidgetsView = Em.View.extend(App.UserPref, App.LocalStorage, {
     hidden: [],
     threshold: {1: [80, 90], 2: [85, 95], 3: [90, 95], 4: [80, 90], 5: [1000, 3000], 6: [70, 90], 7: [90, 95], 8: [50, 75], 9: [30000, 120000],
       10: [], 11: [], 12: [], 13: [], 14: [], 15: [], 16: [], 17: [], 18: [], 19: [], 20: [70, 90], 21: [10, 19.2], 22: [3, 10], 23: [],
-      24: [70, 90], 25: [], 26: [50, 75], 27: [50, 75], 28: [85, 95], 29: [85, 95], 30: []} // id:[thresh1, thresh2]
+      24: [70, 90], 25: [], 26: [50, 75], 27: [50, 75], 28: [85, 95], 29: [85, 95], 30:[]} // id:[thresh1, thresh2]
   }),
 
   /**
@@ -556,10 +568,10 @@ App.MainDashboardWidgetsView = Em.View.extend(App.UserPref, App.LocalStorage, {
   /**
    * Reset widgets visibility-status
    */
-  resetAllWidgets: function () {
+  resetAllWidgets: function() {
     var self = this;
-    App.showConfirmationPopup(function () {
-      if (!App.get('testMode')) {
+    App.showConfirmationPopup(function() {
+      if(!App.get('testMode')) {
         self.postUserPref(self.get('persistKey'), self.get('initPrefObject'));
         self.setDBProperty(self.get('persistKey'), self.get('initPrefObject'));
       }
@@ -574,7 +586,8 @@ App.MainDashboardWidgetsView = Em.View.extend(App.UserPref, App.LocalStorage, {
     return App.router.get('clusterController.gangliaUrl') + "/?r=hour&cs=&ce=&m=&s=by+name&c=HDPSlaves&tab=m&vn=";
   }.property('App.router.clusterController.gangliaUrl'),
 
-  showAlertsPopup: Em.K
+  showAlertsPopup: function (event) {
+  }
 
 });
 

http://git-wip-us.apache.org/repos/asf/ambari/blob/50819a30/ambari-web/test/views/main/dashboard/config_history_view_test.js
----------------------------------------------------------------------
diff --git a/ambari-web/test/views/main/dashboard/config_history_view_test.js b/ambari-web/test/views/main/dashboard/config_history_view_test.js
index a4958b6..379bba7 100644
--- a/ambari-web/test/views/main/dashboard/config_history_view_test.js
+++ b/ambari-web/test/views/main/dashboard/config_history_view_test.js
@@ -21,12 +21,8 @@ require('views/main/dashboard/config_history_view');
 
 describe('App.MainConfigHistoryView', function() {
   var view = App.MainConfigHistoryView.create({
-    totalCount: 0,
-    filteredCount: 0
-  });
-  view.reopen({
     controller: Em.Object.create({
-      name: 'mainConfigHistoryController11',
+      name: 'mainConfigHistoryController',
       paginationProps: [
         {
           name: 'displayLength'
@@ -38,189 +34,11 @@ describe('App.MainConfigHistoryView', function() {
       doPolling: Em.K,
       load: function () {
         return {done: Em.K};
-      },
-      colPropAssoc: []
-    })
-  });
-  view.removeObserver('controller.resetStartIndex', view, 'resetStartIndex');
-
-  describe("#filteredContentInfo", function () {
-    it("", function () {
-      view.set('filteredCount', 1);
-      view.set('totalCount', 2);
-      view.propertyDidChange('filteredContentInfo');
-      expect(view.get('filteredContentInfo')).to.eql(Em.I18n.t('tableView.filters.filteredConfigVersionInfo').format(1, 2));
-    });
-  });
-
-  describe("#serviceFilterView", function () {
-    var subView = view.get('serviceFilterView').create({
-      parentView: view
-    });
-
-    before(function () {
-      sinon.stub(App.Service, 'find').returns([Em.Object.create({
-        serviceName: 'S1',
-        displayName: 's1'
-      })])
-    });
-    after(function () {
-      App.Service.find.restore();
-    });
-    it("content", function () {
-      expect(subView.get('content')).to.eql([
-        {
-          "value": "",
-          "label": Em.I18n.t('common.all')
-        },
-        {
-          "value": "S1",
-          "label": "s1"
-        }
-      ]);
-    });
-
-    before(function () {
-      sinon.stub(view, 'updateFilter', Em.K);
-    });
-    after(function () {
-      view.updateFilter.restore();
-    });
-    it("call onChangeValue()", function () {
-      subView.set('column', 1);
-      subView.set('value', 'value');
-      subView.onChangeValue();
-      expect(view.updateFilter.calledWith(1, 'value', 'select')).to.be.true;
-    });
-  });
-
-  describe("#configGroupFilterView", function () {
-    var subView = view.get('configGroupFilterView').create({
-      parentView: view
-    });
-
-    before(function () {
-      sinon.stub(App.ServiceConfigVersion, 'find').returns([
-        Em.Object.create({groupName: 'G1'}),
-        Em.Object.create({groupName: 'G1'}),
-        Em.Object.create({groupName: null})
-      ]);
-    });
-    after(function () {
-      App.ServiceConfigVersion.find.restore();
-    });
-    it("content", function () {
-      expect(subView.get('content')).to.eql([
-        {
-          "value": "",
-          "label": Em.I18n.t('common.all')
-        },
-        {
-          "value": "G1",
-          "label": "G1"
-        }
-      ]);
-    });
-
-    before(function () {
-      sinon.stub(view, 'updateFilter', Em.K);
-    });
-    after(function () {
-      view.updateFilter.restore();
-    });
-    it("call onChangeValue()", function () {
-      subView.set('column', 1);
-      subView.set('value', 'value');
-      subView.onChangeValue();
-      expect(view.updateFilter.calledWith(1, 'value', 'select')).to.be.true;
-    });
-  });
-
-  describe("#modifiedFilterView", function () {
-    var subView = view.get('modifiedFilterView').create({
-      parentView: view,
-      controller: {
-        modifiedFilter: {
-          actualValues: {
-            startTime: 0,
-            endTime: 1
-          }
-        }
       }
-    });
-
-    before(function () {
-      sinon.stub(view, 'updateFilter', Em.K);
-    });
-    after(function () {
-      view.updateFilter.restore();
-    });
-    it("call onTimeChange()", function () {
-      subView.set('column', 1);
-      subView.onTimeChange();
-      expect(view.updateFilter.calledWith(1, [0, 1], 'range')).to.be.true;
-    });
-  });
-
-  describe("#authorFilterView", function () {
-    var subView = view.get('authorFilterView').create({
-      parentView: view
-    });
-
-    before(function () {
-      sinon.stub(view, 'updateFilter', Em.K);
-    });
-    after(function () {
-      view.updateFilter.restore();
-    });
-    it("call onChangeValue()", function () {
-      subView.set('column', 1);
-      subView.set('value', 'value');
-      subView.onChangeValue();
-      expect(view.updateFilter.calledWith(1, 'value', 'string')).to.be.true;
-    });
-  });
-
-  describe("#notesFilterView", function () {
-    var subView = view.get('notesFilterView').create({
-      parentView: view
-    });
-
-    before(function () {
-      sinon.stub(view, 'updateFilter', Em.K);
-    });
-    after(function () {
-      view.updateFilter.restore();
-    });
-    it("call onChangeValue()", function () {
-      subView.set('column', 1);
-      subView.set('value', 'value');
-      subView.onChangeValue();
-      expect(view.updateFilter.calledWith(1, 'value', 'string')).to.be.true;
-    });
-  });
-
-  describe("#ConfigVersionView", function () {
-    var subView = view.get('ConfigVersionView').create({
-      parentView: view
-    });
-
-    before(function () {
-      sinon.stub(App, 'tooltip', Em.K);
-    });
-    after(function () {
-      App.tooltip.restore();
-    });
-    it("call didInsertElement()", function () {
-      subView.didInsertElement();
-      expect(App.tooltip.calledOnce).to.be.true;
-    });
-    it("call toggleShowLessStatus()", function () {
-      subView.set('showLessNotes', true);
-      subView.toggleShowLessStatus();
-      expect(subView.get('showLessNotes')).to.be.false;
-    });
+    }),
+    filteredCount: 0
   });
+  view.removeObserver('controller.resetStartIndex', view, 'resetStartIndex');
 
   describe('#didInsertElement()', function() {
     it('', function() {
@@ -272,7 +90,6 @@ describe('App.MainConfigHistoryView', function() {
       expect(view.get('controller.isPolling')).to.be.false;
     });
   });
-
   describe('#refresh()', function() {
     it('', function() {
       sinon.spy(view.get('controller'), 'load');
@@ -282,28 +99,4 @@ describe('App.MainConfigHistoryView', function() {
       view.get('controller').load.restore();
     });
   });
-
-  describe("#refreshDone()", function () {
-    before(function () {
-      sinon.stub(view, 'propertyDidChange', Em.K);
-    });
-    after(function () {
-      view.propertyDidChange.restore();
-    });
-    it("", function () {
-      view.set('filteringComplete', false);
-      view.set('controller.resetStartIndex', true);
-      view.refreshDone();
-      expect(view.get('filteringComplete')).to.be.true;
-      expect(view.get('controller.resetStartIndex')).to.be.false;
-    });
-  });
-
-  describe("#colPropAssoc", function () {
-    it("", function () {
-      view.set('controller.colPropAssoc', [1]);
-      view.propertyDidChange('colPropAssoc');
-      expect(view.get('colPropAssoc')).to.eql([1]);
-    });
-  });
 });

http://git-wip-us.apache.org/repos/asf/ambari/blob/50819a30/ambari-web/test/views/main/dashboard/widget_test.js
----------------------------------------------------------------------
diff --git a/ambari-web/test/views/main/dashboard/widget_test.js b/ambari-web/test/views/main/dashboard/widget_test.js
index dab6b30..057b069 100644
--- a/ambari-web/test/views/main/dashboard/widget_test.js
+++ b/ambari-web/test/views/main/dashboard/widget_test.js
@@ -19,166 +19,17 @@
 var App = require('app');
 require('views/main/dashboard/widget');
 
-describe('App.DashboardWidgetView', function () {
-  var dashboardWidgetView = App.DashboardWidgetView.create({
-    parentView: Em.Object.create({
-      widgetsMapper: Em.K,
-      getUserPref: Em.K,
-      postUserPref: Em.K,
-      translateToReal: Em.K,
-      visibleWidgets: [],
-      hiddenWidgets: []
-    })
-  });
+describe('App.DashboardWidgetView', function() {
+  var dashboardWidgetView = App.DashboardWidgetView.create();
 
-  describe('#viewID', function () {
-    it('viewID is computed with id', function () {
+  describe('#viewID', function() {
+    it('viewID is computed with id', function() {
       dashboardWidgetView.set('id', 5);
       expect(dashboardWidgetView.get('viewID')).to.equal('widget-5');
     });
   });
 
-  describe('#model', function () {
-    it('model_type is null', function () {
-      dashboardWidgetView.set('model_type', null);
-      dashboardWidgetView.propertyDidChange('model');
-      expect(dashboardWidgetView.get('model')).to.eql({});
-    });
-    it('model_type is valid', function () {
-      dashboardWidgetView.set('model_type', 's');
-      dashboardWidgetView.propertyDidChange('model');
-      dashboardWidgetView.set('parentView.s_model', {'s': {}});
-      expect(dashboardWidgetView.get('model')).to.eql({'s': {}});
-    });
-  });
-
-  describe("#didInsertElement()", function () {
-    before(function () {
-      sinon.stub(App, 'tooltip', Em.K);
-    });
-    after(function () {
-      App.tooltip.restore();
-    });
-    it("call App.tooltip", function () {
-      dashboardWidgetView.didInsertElement();
-      expect(App.tooltip.calledOnce).to.be.true;
-    });
-  });
-
-  describe("#deleteWidget()", function () {
-    beforeEach(function () {
-      sinon.stub(dashboardWidgetView.get('parentView'), 'widgetsMapper').returns({});
-      sinon.stub(dashboardWidgetView.get('parentView'), 'getUserPref').returns({
-        complete: Em.K
-      });
-    });
-    afterEach(function () {
-      dashboardWidgetView.get('parentView').widgetsMapper.restore();
-      dashboardWidgetView.get('parentView').getUserPref.restore();
-    });
-    it("testMode is on", function () {
-      App.set('testMode', true);
-      dashboardWidgetView.set('id', '1');
-      dashboardWidgetView.deleteWidget();
-      expect(dashboardWidgetView.get('parentView').widgetsMapper.calledWith('1')).to.be.true;
-      expect(dashboardWidgetView.get('parentView.visibleWidgets')).to.be.empty;
-      expect(dashboardWidgetView.get('parentView.hiddenWidgets')).to.not.be.empty;
-    });
-    it("testMode is off", function () {
-      App.set('testMode', false);
-      dashboardWidgetView.set('parentView.persistKey', 'key');
-      dashboardWidgetView.deleteWidget();
-      expect(dashboardWidgetView.get('parentView').getUserPref.calledWith('key')).to.be.true;
-    });
-  });
-
-  describe("#deleteWidgetComplete()", function () {
-    before(function () {
-      sinon.spy(dashboardWidgetView.get('parentView'), 'postUserPref');
-      sinon.spy(dashboardWidgetView.get('parentView'), 'translateToReal');
-    });
-    after(function () {
-      dashboardWidgetView.get('parentView').postUserPref.restore();
-      dashboardWidgetView.get('parentView').translateToReal.restore();
-    });
-    it("", function () {
-      dashboardWidgetView.set('parentView.currentPrefObject', {
-        dashboardVersion: 'new',
-        visible: ['1', '2'],
-        hidden: [],
-        threshold: 'threshold'
-      });
-      dashboardWidgetView.set('parentView.persistKey', 'key');
-      dashboardWidgetView.deleteWidgetComplete();
-      expect(dashboardWidgetView.get('parentView').postUserPref.calledWith('key', {
-        dashboardVersion: 'new',
-        visible: ['2'],
-        hidden: ['1'],
-        threshold: 'threshold'
-      }));
-      expect(dashboardWidgetView.get('parentView').translateToReal.calledWith({
-        dashboardVersion: 'new',
-        visible: ['2'],
-        hidden: ['1'],
-        threshold: 'threshold'
-      }));
-    });
-  });
-
-  describe("#editWidget()", function () {
-    before(function () {
-      sinon.stub(dashboardWidgetView, 'showEditDialog', Em.K);
-    });
-    after(function () {
-      dashboardWidgetView.showEditDialog.restore();
-    });
-    it("call showEditDialog", function () {
-      dashboardWidgetView.editWidget();
-      expect(dashboardWidgetView.showEditDialog.calledOnce).to.be.true;
-    });
-  });
-
-  describe("#showEditDialog()", function () {
-    var obj = Em.Object.create({
-      observeNewThresholdValue: Em.K,
-      thresh1: '1',
-      thresh2: '2'
-    });
-    before(function () {
-      sinon.spy(obj, 'observeNewThresholdValue');
-      sinon.stub(dashboardWidgetView.get('parentView'), 'getUserPref').returns({
-        complete: Em.K
-      });
-    });
-    after(function () {
-      obj.observeNewThresholdValue.restore();
-      dashboardWidgetView.get('parentView').getUserPref.restore();
-    });
-    it("open popup", function () {
-      var popup = dashboardWidgetView.showEditDialog(obj);
-      popup.onPrimary();
-      expect(obj.observeNewThresholdValue.calledOnce).to.be.true;
-      expect(dashboardWidgetView.get('thresh1')).to.equal(1);
-      expect(dashboardWidgetView.get('thresh2')).to.equal(2);
-      expect(dashboardWidgetView.get('parentView').getUserPref.calledOnce).to.be.true;
-    });
-  });
-
-  describe('#model', function () {
-    it('model_type is null', function () {
-      dashboardWidgetView.set('model_type', null);
-      dashboardWidgetView.propertyDidChange('model');
-      expect(dashboardWidgetView.get('model')).to.eql({});
-    });
-    it('model_type is valid', function () {
-      dashboardWidgetView.set('model_type', 's');
-      dashboardWidgetView.propertyDidChange('model');
-      dashboardWidgetView.set('parentView.s_model', {'s': {}});
-      expect(dashboardWidgetView.get('model')).to.eql({'s': {}});
-    });
-  });
-
-  describe('#hoverContentTopClass', function () {
+  describe('#hoverContentTopClass', function() {
     var tests = [
       {
         h: ['', ''],
@@ -209,195 +60,14 @@ describe('App.DashboardWidgetView', function () {
         h: ['', '', '', ''],
         e: 'content-hidden-four-line',
         m: '4 lines'
-      },
-      {
-        h: ['', '', '', '', '', ''],
-        e: 'content-hidden-six-line',
-        m: '6 lines'
       }
     ];
-    tests.forEach(function (test) {
-      it(test.m, function () {
+    tests.forEach(function(test) {
+      it(test.m, function() {
         dashboardWidgetView.set('hiddenInfo', test.h);
         expect(dashboardWidgetView.get('hoverContentTopClass')).to.equal(test.e);
       });
     });
   });
 
-  describe("#widgetConfig", function() {
-    var widget = dashboardWidgetView.get('widgetConfig').create();
-    describe("#hintInfo", function() {
-      it("", function() {
-        widget.set('maxValue', 1);
-        widget.propertyDidChange('hintInfo');
-        expect(widget.get('hintInfo')).to.equal(Em.I18n.t('dashboard.widgets.hintInfo.common').format(1));
-      });
-    });
-    describe("#observeThresh1Value", function() {
-      beforeEach(function () {
-        sinon.stub(widget, 'updateSlider', Em.K);
-      });
-      afterEach(function () {
-        widget.updateSlider.restore();
-      });
-      var testCases = [
-        {
-          data: {
-            thresh1: '',
-            maxValue: 0
-          },
-          result: {
-            isThresh1Error: true,
-            errorMessage1: Em.I18n.t('admin.users.editError.requiredField')
-          }
-        },
-        {
-          data: {
-            thresh1: 'NaN',
-            maxValue: 0
-          },
-          result: {
-            isThresh1Error: true,
-            errorMessage1: Em.I18n.t('dashboard.widgets.error.invalid').format(0)
-          }
-        },
-        {
-          data: {
-            thresh1: '-1',
-            maxValue: 0
-          },
-          result: {
-            isThresh1Error: true,
-            errorMessage1: Em.I18n.t('dashboard.widgets.error.invalid').format(0)
-          }
-        },
-        {
-          data: {
-            thresh1: '2',
-            maxValue: 1
-          },
-          result: {
-            isThresh1Error: true,
-            errorMessage1: Em.I18n.t('dashboard.widgets.error.invalid').format(1)
-          }
-        },
-        {
-          data: {
-            thresh1: '1',
-            thresh2: '1',
-            maxValue: 2
-          },
-          result: {
-            isThresh1Error: true,
-            errorMessage1: Em.I18n.t('dashboard.widgets.error.smaller')
-          }
-        },
-        {
-          data: {
-            thresh1: '1',
-            thresh2: '0',
-            maxValue: 2
-          },
-          result: {
-            isThresh1Error: true,
-            errorMessage1: Em.I18n.t('dashboard.widgets.error.smaller')
-          }
-        },
-        {
-          data: {
-            thresh1: '1',
-            thresh2: '2',
-            maxValue: 2
-          },
-          result: {
-            isThresh1Error: false,
-            errorMessage1: ''
-          }
-        }
-      ];
-      testCases.forEach(function (test) {
-        it("thresh1 - " + test.data.thresh1 + ', maxValue - ' + test.data.maxValue, function () {
-          widget.set('isThresh2Error', false);
-          widget.set('thresh2', test.data.thresh2 || "");
-          widget.set('thresh1', test.data.thresh1);
-          widget.set('maxValue', test.data.maxValue);
-          widget.observeThresh1Value();
-          expect(widget.get('isThresh1Error')).to.equal(test.result.isThresh1Error);
-          expect(widget.get('errorMessage1')).to.equal(test.result.errorMessage1);
-          expect(widget.updateSlider.called).to.be.true;
-        });
-      });
-    });
-
-    describe("#observeThresh2Value", function() {
-      beforeEach(function () {
-        sinon.stub(widget, 'updateSlider', Em.K);
-      });
-      afterEach(function () {
-        widget.updateSlider.restore();
-      });
-      var testCases = [
-        {
-          data: {
-            thresh2: '',
-            maxValue: 0
-          },
-          result: {
-            isThresh2Error: true,
-            errorMessage2: Em.I18n.t('admin.users.editError.requiredField')
-          }
-        },
-        {
-          data: {
-            thresh2: 'NaN',
-            maxValue: 0
-          },
-          result: {
-            isThresh2Error: true,
-            errorMessage2: Em.I18n.t('dashboard.widgets.error.invalid').format(0)
-          }
-        },
-        {
-          data: {
-            thresh2: '-1',
-            maxValue: 0
-          },
-          result: {
-            isThresh2Error: true,
-            errorMessage2: Em.I18n.t('dashboard.widgets.error.invalid').format(0)
-          }
-        },
-        {
-          data: {
-            thresh2: '2',
-            maxValue: 1
-          },
-          result: {
-            isThresh2Error: true,
-            errorMessage2: Em.I18n.t('dashboard.widgets.error.invalid').format(1)
-          }
-        },
-        {
-          data: {
-            thresh2: '2',
-            maxValue: 2
-          },
-          result: {
-            isThresh2Error: false,
-            errorMessage2: ''
-          }
-        }
-      ];
-      testCases.forEach(function (test) {
-        it("thresh2 - " + test.data.thresh2 + ', maxValue - ' + test.data.maxValue, function () {
-          widget.set('thresh2', test.data.thresh2 || "");
-          widget.set('maxValue', test.data.maxValue);
-          widget.observeThresh2Value();
-          expect(widget.get('isThresh2Error')).to.equal(test.result.isThresh2Error);
-          expect(widget.get('errorMessage2')).to.equal(test.result.errorMessage2);
-          expect(widget.updateSlider.called).to.be.true;
-        });
-      });
-    });
-  });
-});
\ No newline at end of file
+});

http://git-wip-us.apache.org/repos/asf/ambari/blob/50819a30/ambari-web/test/views/main/dashboard/widgets_test.js
----------------------------------------------------------------------
diff --git a/ambari-web/test/views/main/dashboard/widgets_test.js b/ambari-web/test/views/main/dashboard/widgets_test.js
index 8a2023c..9ff1d40 100644
--- a/ambari-web/test/views/main/dashboard/widgets_test.js
+++ b/ambari-web/test/views/main/dashboard/widgets_test.js
@@ -23,12 +23,15 @@ var filters = require('views/common/filter_view');
 require('mixins/common/userPref');
 require('mixins/common/localStorage');
 require('views/main/dashboard/widgets');
+var mainDashboardWidgetsView;
 
-describe('App.MainDashboardWidgetsView', function () {
+describe('App.MainDashboardWidgetsView', function() {
 
-  var view = App.MainDashboardWidgetsView.create();
+  beforeEach(function() {
+    mainDashboardWidgetsView = App.MainDashboardWidgetsView.create();
+  });
 
-  describe('#setInitPrefObject', function () {
+  describe('#setInitPrefObject', function() {
     var host_metrics_widgets_count = 4;
     var hdfs_widgets_count = 7;
     var mapreduce_widgets_count = 7;
@@ -45,7 +48,7 @@ describe('App.MainDashboardWidgetsView', function () {
           yarn_model: null
         },
         e: {
-          visibleL: total_widgets_count - host_metrics_widgets_count - hdfs_widgets_count - mapreduce_widgets_count - hbase_widgets_count - yarn_widgets_count - 1,
+          visibleL: total_widgets_count - host_metrics_widgets_count- hdfs_widgets_count - mapreduce_widgets_count - hbase_widgets_count - yarn_widgets_count - 1,
           hiddenL: 0
         },
         m: 'All models are null'
@@ -73,7 +76,7 @@ describe('App.MainDashboardWidgetsView', function () {
           yarn_model: null
         },
         e: {
-          visibleL: total_widgets_count - mapreduce_widgets_count - hbase_widgets_count - yarn_widgets_count - 1,
+          visibleL: total_widgets_count  - mapreduce_widgets_count - hbase_widgets_count - yarn_widgets_count - 1,
           hiddenL: 0
         },
         m: 'mapreduce_model, hbase_model, yarn_model are null'
@@ -121,342 +124,33 @@ describe('App.MainDashboardWidgetsView', function () {
         m: 'All models are not null'
       }
     ]);
-    tests.forEach(function (test) {
-      it(test.m, function () {
-        view.set('host_metrics_model', test.models.host_metrics_model);
-        view.set('hdfs_model', test.models.hdfs_model);
-        view.set('mapreduce_model', test.models.mapreduce_model);
-        view.set('hbase_model', test.models.hbase_model);
-        view.set('yarn_model', test.models.yarn_model);
-        view.setInitPrefObject();
-        expect(view.get('initPrefObject.visible.length')).to.equal(test.e.visibleL);
-        expect(view.get('initPrefObject.hidden.length')).to.equal(test.e.hiddenL);
+    tests.forEach(function(test) {
+      it(test.m, function() {
+        mainDashboardWidgetsView.set('host_metrics_model', test.models.host_metrics_model);
+        mainDashboardWidgetsView.set('hdfs_model', test.models.hdfs_model);
+        mainDashboardWidgetsView.set('mapreduce_model', test.models.mapreduce_model);
+        mainDashboardWidgetsView.set('hbase_model', test.models.hbase_model);
+        mainDashboardWidgetsView.set('yarn_model', test.models.yarn_model);
+        mainDashboardWidgetsView.setInitPrefObject();
+        expect(mainDashboardWidgetsView.get('initPrefObject.visible.length')).to.equal(test.e.visibleL);
+        expect(mainDashboardWidgetsView.get('initPrefObject.hidden.length')).to.equal(test.e.hiddenL);
       });
     });
   });
 
-  describe('#persistKey', function () {
-    beforeEach(function () {
-      sinon.stub(App.router, 'get', function (k) {
+  describe('#persistKey', function() {
+    beforeEach(function() {
+      sinon.stub(App.router, 'get', function(k) {
         if ('loginName' === k) return 'tdk';
         return Em.get(App.router, k);
       });
     });
-    afterEach(function () {
-      App.router.get.restore();
-    });
-    it('Check it', function () {
-      expect(view.get('persistKey')).to.equal('user-pref-tdk-dashboard');
-    });
-  });
-
-  describe("#didInsertElement()", function () {
-    before(function () {
-      sinon.stub(view, 'setWidgetsDataModel', Em.K);
-      sinon.stub(view, 'setInitPrefObject', Em.K);
-      sinon.stub(view, 'setOnLoadVisibleWidgets', Em.K);
-      sinon.stub(Em.run, 'next', Em.K);
-    });
-    after(function () {
-      view.setWidgetsDataModel.restore();
-      view.setInitPrefObject.restore();
-      view.setOnLoadVisibleWidgets.restore();
-      Em.run.next.restore();
-    });
-    it("", function () {
-      view.didInsertElement();
-      expect(view.setWidgetsDataModel.calledOnce).to.be.true;
-      expect(view.setInitPrefObject.calledOnce).to.be.true;
-      expect(view.setOnLoadVisibleWidgets.calledOnce).to.be.true;
-      expect(Em.run.next.calledWith(view, 'makeSortable')).to.be.true;
-      expect(view.get('isDataLoaded')).to.be.true
-    });
-  });
-
-  describe("#setWidgetsDataModel()", function () {
-    beforeEach(function () {
-      this.model = sinon.stub(App.Service, 'find');
-      this.get = sinon.stub(App, 'get');
-    });
-    afterEach(function () {
-      this.model.restore();
-      this.get.restore();
-    });
-    it("No host_metrics_model", function () {
-      this.get.returns([]);
-      this.model.returns([Em.Object.create({
-        serviceName: 'S1',
-        id: 'S1'
-      })]);
-      view.set('host_metrics_model', null);
-      view.setWidgetsDataModel();
-      expect(view.get('host_metrics_model')).to.be.null;
-      expect(view.get('s1_model')).to.eql(Em.Object.create({
-        serviceName: 'S1',
-        id: 'S1'
-      }));
-    });
-    it("host_metrics_model is present", function () {
-      this.get.returns([1]);
-      this.model.returns([Em.Object.create({
-        serviceName: 'HDFS',
-        id: 'HDFS'
-      })]);
-      view.set('host_metrics_model', null);
-      view.setWidgetsDataModel();
-      expect(view.get('host_metrics_model')).to.eql([1]);
-      expect(view.get('hdfs_model.id')).to.equal('HDFS');
-    });
-  });
-
-  describe("#plusButtonFilterView", function () {
-    var plusButtonFilterView = view.get('plusButtonFilterView').create({
-      parentView: view
-    });
-    plusButtonFilterView.reopen({
-      visibleWidgets: [],
-      hiddenWidgets: []
-    });
-
-    describe("#applyFilter()", function () {
-      var widget = {checked: true};
-      beforeEach(function () {
-        sinon.stub(view, 'getUserPref').returns({
-          complete: Em.K
-        });
-        sinon.stub(view, 'widgetsMapper').returns(widget);
-      });
-      afterEach(function () {
-        view.getUserPref.restore();
-        view.widgetsMapper.restore();
-      });
-      it("testMode is on", function () {
-        App.set('testMode', true);
-        plusButtonFilterView.set('hiddenWidgets', [widget]);
-        plusButtonFilterView.applyFilter();
-        expect(view.getUserPref.called).to.be.false;
-        expect(plusButtonFilterView.get('visibleWidgets')).not.to.be.empty;
-        expect(plusButtonFilterView.get('hiddenWidgets')).to.be.empty;
-      });
-      it("testMode is off", function () {
-        App.set('testMode', false);
-        plusButtonFilterView.applyFilter();
-        expect(view.getUserPref.calledOnce).to.be.true;
-      });
-    });
-
-    describe("#applyFilterComplete()", function () {
-      var widget = {checked: true};
-      beforeEach(function () {
-        sinon.stub(view, 'postUserPref');
-        sinon.stub(view, 'translateToReal');
-      });
-      afterEach(function () {
-        view.postUserPref.restore();
-        view.translateToReal.restore();
-      });
-      beforeEach(function () {
-        sinon.stub(App.router, 'get', function (k) {
-          if ('loginName' === k) return 'tdk';
-          return Em.get(App.router, k);
-        });
-      });
-      afterEach(function () {
-        App.router.get.restore();
-      });
-      it("", function () {
-        plusButtonFilterView.set('hiddenWidgets', [
-          Em.Object.create({
-            checked: true,
-            id: 1,
-            displayName: 'i1'
-          }),
-          Em.Object.create({
-            checked: false,
-            id: 2,
-            displayName: 'i2'
-          })
-        ]);
-        view.set('currentPrefObject', Em.Object.create({
-          dashboardVersion: 'new',
-          visible: [],
-          hidden: [],
-          threshold: 'threshold'
-        }));
-        view.set('persistKey', 'key');
-        plusButtonFilterView.applyFilterComplete();
-        expect(view.postUserPref.calledOnce).to.be.true;
-        expect(view.translateToReal.getCall(0).args[0]).to.eql(Em.Object.create({
-          dashboardVersion: 'new',
-          visible: [1],
-          hidden: [
-            [2, 'i2']
-          ],
-          threshold: 'threshold'
-        }));
-        expect(plusButtonFilterView.get('hiddenWidgets.length')).to.equal(1);
-      });
-    });
-  });
-
-  describe("#translateToReal()", function () {
-    beforeEach(function () {
-      sinon.stub(view, 'widgetsMapper').returns(Em.Object.create());
-      view.set('visibleWidgets', []);
-      view.set('hiddenWidgets', []);
-    });
-    afterEach(function () {
-      view.widgetsMapper.restore();
-    });
-    it("version is not new", function () {
-      var data = {
-        dashboardVersion: null,
-        visible: [],
-        hidden: [],
-        threshold: []
-      };
-      view.translateToReal(data);
-      expect(view.get('visibleWidgets')).to.be.empty;
-      expect(view.get('hiddenWidgets')).to.be.empty;
-    });
-    it("version is new", function () {
-      var data = {
-        dashboardVersion: 'new',
-        visible: [1],
-        hidden: [
-          ['id', 'title']
-        ],
-        threshold: [
-          [],
-          [
-            ['tresh1'],
-            ['tresh2']
-          ]
-        ]
-      };
-      view.translateToReal(data);
-      expect(view.get('visibleWidgets')).to.not.be.empty;
-      expect(view.get('hiddenWidgets')).to.not.be.empty;
-    });
-  });
-
-  describe("#setOnLoadVisibleWidgets()", function () {
-    beforeEach(function () {
-      sinon.stub(view, 'translateToReal', Em.K);
-      sinon.stub(view, 'getUserPref').returns({complete: Em.K});
-    });
-    afterEach(function () {
-      view.translateToReal.restore();
-      view.getUserPref.restore();
-    });
-
-    it("testMode is true", function () {
-      App.set('testMode', true);
-      view.setOnLoadVisibleWidgets();
-      expect(view.translateToReal.calledOnce).to.be.true;
-    });
-    it("testMode is false", function () {
-      App.set('testMode', false);
-      view.setOnLoadVisibleWidgets();
-      expect(view.getUserPref.calledOnce).to.be.true;
-    });
-  });
-
-  describe("#removeWidget()", function () {
-    it("", function () {
-      var widget = {};
-      var value = {
-        visible: [widget],
-        hidden: [
-          [widget]
-        ]
-      };
-      value = view.removeWidget(value, widget);
-      expect(value.visible).to.be.empty;
-      expect(value.hidden).to.be.empty;
-    });
-  });
-
-  describe("#containsWidget()", function () {
-    it("widget visible", function () {
-      var widget = {};
-      var value = {
-        visible: [widget],
-        hidden: [
-          [widget]
-        ]
-      };
-      expect(view.containsWidget(value, widget)).to.be.true;
-    });
-    it("widget absent", function () {
-      var widget = {};
-      var value = {
-        visible: [],
-        hidden: []
-      };
-      expect(view.containsWidget(value, widget)).to.be.false;
-    });
-    it("widget hidden", function () {
-      var widget = {};
-      var value = {
-        visible: [],
-        hidden: [
-          [widget]
-        ]
-      };
-      expect(view.containsWidget(value, widget)).to.be.true;
-    });
-  });
-
-  describe("#persistKey", function () {
-    before(function () {
-      sinon.stub(App.router, 'get').withArgs('loginName').returns('user');
-    });
-    after(function () {
+    afterEach(function() {
       App.router.get.restore();
     });
-    it("", function () {
-      view.propertyDidChange('persistKey');
-      expect(view.get('persistKey')).to.equal('user-pref-user-dashboard');
+    it('Check it', function() {
+      expect(mainDashboardWidgetsView.get('persistKey')).to.equal('user-pref-tdk-dashboard');
     });
   });
 
-  describe("#getUserPrefSuccessCallback()", function () {
-    it("response is null", function () {
-      view.set('currentPrefObject', null);
-      view.getUserPrefSuccessCallback(null, {}, {});
-      expect(view.get('currentPrefObject')).to.be.null;
-    });
-    it("response is correct", function () {
-      view.set('currentPrefObject', null);
-      view.getUserPrefSuccessCallback({}, {}, {});
-      expect(view.get('currentPrefObject')).to.eql({});
-    });
-  });
-
-  describe("#resetAllWidgets()", function () {
-    before(function () {
-      sinon.stub(App, 'showConfirmationPopup', Em.K);
-    });
-    after(function () {
-      App.showConfirmationPopup.restore();
-    });
-    it("", function () {
-      view.resetAllWidgets();
-      expect(App.showConfirmationPopup.calledOnce).to.be.true;
-    });
-  });
-
-  describe("#gangliaUrl", function () {
-    before(function () {
-      sinon.stub(App.router, 'get').withArgs('clusterController.gangliaUrl').returns('url');
-    });
-    after(function () {
-      App.router.get.restore();
-    });
-    it("", function () {
-      view.propertyDidChange('gangliaUrl');
-      expect(view.get('gangliaUrl')).to.equal('url/?r=hour&cs=&ce=&m=&s=by+name&c=HDPSlaves&tab=m&vn=');
-    });
-  });
 });
\ No newline at end of file


Mime
View raw message