You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by al...@apache.org on 2015/06/02 16:50:56 UTC
[1/3] ambari git commit: AMBARI-11626. Views: display name not update
on views top menu (alexantonenko)
Repository: ambari
Updated Branches:
refs/heads/trunk 9fa9c756e -> 9e75a7370
AMBARI-11626. Views: display name not update on views top menu (alexantonenko)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/9e75a737
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/9e75a737
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/9e75a737
Branch: refs/heads/trunk
Commit: 9e75a73704d2965bea3de033fe4dcb230dcad895
Parents: abb7028
Author: Alex Antonenko <hi...@gmail.com>
Authored: Tue Jun 2 17:43:57 2015 +0300
Committer: Alex Antonenko <hi...@gmail.com>
Committed: Tue Jun 2 17:50:51 2015 +0300
----------------------------------------------------------------------
.../controllers/ambariViews/CreateViewInstanceCtrl.js | 3 ++-
.../scripts/controllers/ambariViews/ViewsEditCtrl.js | 2 ++
.../ui/admin-web/app/scripts/controllers/mainCtrl.js | 14 +++++++++++---
3 files changed, 15 insertions(+), 4 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/9e75a737/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/ambariViews/CreateViewInstanceCtrl.js
----------------------------------------------------------------------
diff --git a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/ambariViews/CreateViewInstanceCtrl.js b/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/ambariViews/CreateViewInstanceCtrl.js
index ddda59e..02b7aa9 100644
--- a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/ambariViews/CreateViewInstanceCtrl.js
+++ b/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/ambariViews/CreateViewInstanceCtrl.js
@@ -135,6 +135,7 @@ angular.module('ambariAdminConsole')
$location.path('/views/' + $scope.instance.view_name + '/versions/' + $scope.instance.version + '/instances/' + $scope.instance.instance_name + '/edit');
}
$scope.form.instanceCreateForm.isSaving = false;
+ $scope.$root.$emit('instancesUpdate');
})
.catch(function (data) {
var errorMessage = data.message;
@@ -154,7 +155,7 @@ angular.module('ambariAdminConsole')
});
if (showGeneralError) {
- $scope.form.instanceCreateForm.generalValidationError = errorMessage;
+ $scope.form.instanceCreateForm.generalValidationError = errorMessage;
}
} catch (e) {
console.error('Unable to parse error message:', data.message);
http://git-wip-us.apache.org/repos/asf/ambari/blob/9e75a737/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/ambariViews/ViewsEditCtrl.js
----------------------------------------------------------------------
diff --git a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/ambariViews/ViewsEditCtrl.js b/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/ambariViews/ViewsEditCtrl.js
index e7f80ee..2404dc0 100644
--- a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/ambariViews/ViewsEditCtrl.js
+++ b/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/ambariViews/ViewsEditCtrl.js
@@ -196,6 +196,7 @@ angular.module('ambariAdminConsole')
$scope.cluster = $scope.clusters[0];
});
+
$scope.saveSettings = function(callback) {
if( $scope.settingsForm.$valid ){
var data = {
@@ -241,6 +242,7 @@ angular.module('ambariAdminConsole')
};
return View.updateInstance($routeParams.viewId, $routeParams.version, $routeParams.instanceId, data)
.success(function() {
+ $scope.$root.$emit('instancesUpdate');
if( callback ){
callback();
} else {
http://git-wip-us.apache.org/repos/asf/ambari/blob/9e75a737/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/mainCtrl.js
----------------------------------------------------------------------
diff --git a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/mainCtrl.js b/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/mainCtrl.js
index b740a6a..e2b3a50 100644
--- a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/mainCtrl.js
+++ b/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/mainCtrl.js
@@ -71,12 +71,20 @@ angular.module('ambariAdminConsole')
loadAmbariVersion();
$scope.viewInstances = [];
- View.getAllVisibleInstance().then(function(instances) {
- $scope.viewInstances = instances;
- });
+
+ $scope.updateInstances = function () {
+ View.getAllVisibleInstance().then(function(instances) {
+ $scope.viewInstances = instances;
+ });
+ };
$scope.gotoViewsDashboard =function() {
window.location = '/#/main/views';
};
+ $scope.$root.$on('instancesUpdate', function (event, data) {
+ $scope.updateInstances();
+ });
+
+ $scope.updateInstances();
}]);
[2/3] ambari git commit: AMBARI-11623. UI typo (alexantonenko)
Posted by al...@apache.org.
AMBARI-11623. UI typo (alexantonenko)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/abb70289
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/abb70289
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/abb70289
Branch: refs/heads/trunk
Commit: abb7028956c328a98cdeccb6f2a7e63b0f45f55e
Parents: 9614eb6
Author: Alex Antonenko <hi...@gmail.com>
Authored: Tue Jun 2 17:36:59 2015 +0300
Committer: Alex Antonenko <hi...@gmail.com>
Committed: Tue Jun 2 17:50:51 2015 +0300
----------------------------------------------------------------------
ambari-web/app/messages.js | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/abb70289/ambari-web/app/messages.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/messages.js b/ambari-web/app/messages.js
index 37717b1..ee2117d 100644
--- a/ambari-web/app/messages.js
+++ b/ambari-web/app/messages.js
@@ -269,8 +269,8 @@ Em.I18n.translations = {
'common.removed': 'Removed',
'common.testing': 'Testing',
- 'models.alert_instance.tiggered.verbose': "Occured on {0} <br> Checked on {1}",
- 'models.alert_definition.triggered.verbose': "Occured on {0}",
+ 'models.alert_instance.tiggered.verbose': "Occurred on {0} <br> Checked on {1}",
+ 'models.alert_definition.triggered.verbose': "Occurred on {0}",
'models.alert_definition.triggered.checked': "Status Changed: {0}\nLast Checked: {1}",
'passiveState.turnOn':'Turn On Maintenance Mode',
[3/3] ambari git commit: AMBARI-11622. Ambari UI: adjust Metrics area
on Service pages (alexantonenko)
Posted by al...@apache.org.
AMBARI-11622. Ambari UI: adjust Metrics area on Service pages (alexantonenko)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/9614eb6a
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/9614eb6a
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/9614eb6a
Branch: refs/heads/trunk
Commit: 9614eb6a2344be89beffeba5cd1230d8f3f76ee2
Parents: 9fa9c75
Author: Alex Antonenko <hi...@gmail.com>
Authored: Tue Jun 2 17:35:34 2015 +0300
Committer: Alex Antonenko <hi...@gmail.com>
Committed: Tue Jun 2 17:50:51 2015 +0300
----------------------------------------------------------------------
ambari-web/app/assets/test/tests.js | 1 +
ambari-web/app/messages.js | 4 +-
.../app/mixins/common/widgets/widget_section.js | 3 +
ambari-web/app/styles/application.less | 3 +
.../app/templates/main/charts/linear_time.hbs | 2 +-
.../app/templates/main/service/info/summary.hbs | 68 +++++++++++---------
.../app/views/common/chart/linear_time.js | 23 +++++--
.../views/common/widget/graph_widget_view.js | 5 +-
ambari-web/app/views/main/dashboard/widget.js | 5 +-
.../common/widgets/widget_section_test.js | 63 ++++++++++++++++++
10 files changed, 137 insertions(+), 40 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/9614eb6a/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 177d871..1be092c 100644
--- a/ambari-web/app/assets/test/tests.js
+++ b/ambari-web/app/assets/test/tests.js
@@ -136,6 +136,7 @@ var files = ['test/init_model_test',
'test/mixins/common/configs/enhanced_configs_test',
'test/mixins/common/configs/configs_saver_test',
'test/mixins/common/chart/storm_linear_time_test',
+ 'test/mixins/common/widgets/widget_section_test',
'test/mixins/common/localStorage_test',
'test/mixins/common/reload_popup_test',
'test/mixins/common/serverValidator_test',
http://git-wip-us.apache.org/repos/asf/ambari/blob/9614eb6a/ambari-web/app/messages.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/messages.js b/ambari-web/app/messages.js
index 2b97242..37717b1 100644
--- a/ambari-web/app/messages.js
+++ b/ambari-web/app/messages.js
@@ -383,7 +383,8 @@ Em.I18n.translations = {
'titlebar.alerts.noAlerts': 'No Alerts',
'graphs.noData.title': 'No Data',
- 'graphs.noData.message': 'There was no data available. Possible reasons include inaccessible/unsupported metrics service.',
+ 'graphs.noData.message': 'No Data Available',
+ 'graphs.noData.tooltip.title': 'No Data Available. The Ambari Metrics service may be not installed or inaccessible',
'graphs.noDataAtTime.message': 'No available data for the time period.',
'graphs.error.title': 'Error',
'graphs.error.message': 'There was a problem getting data for the chart ({0}: {1})',
@@ -395,6 +396,7 @@ Em.I18n.translations = {
'graphs.timeRange.week': 'Last 1 week',
'graphs.timeRange.month': 'Last 1 month',
'graphs.timeRange.year': 'Last 1 year',
+ 'graphs.tooltip.title': 'Click to zoom',
'users.userName.validationFail': 'Only lowercase letters and numbers are recommended; must start with a letter',
'host.spacesValidation': 'Cannot contain whitespace',
http://git-wip-us.apache.org/repos/asf/ambari/blob/9614eb6a/ambari-web/app/mixins/common/widgets/widget_section.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/mixins/common/widgets/widget_section.js b/ambari-web/app/mixins/common/widgets/widget_section.js
index 2a22854..e486d66 100644
--- a/ambari-web/app/mixins/common/widgets/widget_section.js
+++ b/ambari-web/app/mixins/common/widgets/widget_section.js
@@ -96,6 +96,9 @@ App.WidgetSectionMixin = Ember.Mixin.create({
return [];
}.property('isWidgetsLoaded', 'activeWidgetLayout.widgets'),
+ isAmbariMetricsInstalled: function () {
+ return App.Service.find().someProperty('serviceName', 'AMBARI_METRICS');
+ }.property('App.router.mainServiceController.content.length'),
/**
* load widgets defined by user
http://git-wip-us.apache.org/repos/asf/ambari/blob/9614eb6a/ambari-web/app/styles/application.less
----------------------------------------------------------------------
diff --git a/ambari-web/app/styles/application.less b/ambari-web/app/styles/application.less
index 4de2aae..347553e 100644
--- a/ambari-web/app/styles/application.less
+++ b/ambari-web/app/styles/application.less
@@ -547,6 +547,9 @@ h1 {
max-width: 400px;
overflow-wrap: break-word;
white-space:pre-wrap;
+ &.graph-tooltip {
+ max-width: 200px;
+ }
}
.popover {
http://git-wip-us.apache.org/repos/asf/ambari/blob/9614eb6a/ambari-web/app/templates/main/charts/linear_time.hbs
----------------------------------------------------------------------
diff --git a/ambari-web/app/templates/main/charts/linear_time.hbs b/ambari-web/app/templates/main/charts/linear_time.hbs
index bcde4c4..b6bd6d0 100644
--- a/ambari-web/app/templates/main/charts/linear_time.hbs
+++ b/ambari-web/app/templates/main/charts/linear_time.hbs
@@ -19,7 +19,7 @@
<div class="screensaver chart-container" {{bindAttr class="view.isReady:hide"}} >
<div id="{{unbound view.id}}-title" class="chart-title">{{view.title}}</div>
</div>
-<div id="{{unbound view.id}}-container" class="chart-container hide" {{bindAttr class="view.isReady:show"}} rel="ZoomInTooltip" title="Click to zoom">
+<div id="{{unbound view.id}}-container" class="chart-container hide" {{bindAttr class="view.isReady:show"}} rel="ZoomInTooltip">
<div id="{{unbound view.id}}-yaxis" class="chart-y-axis" {{action showGraphInPopup target="view"}}></div>
<div id="{{unbound view.id}}-xaxis" class="chart-x-axis" {{action showGraphInPopup target="view"}}></div>
<div id="{{unbound view.id}}-legend" class="chart-legend"></div>
http://git-wip-us.apache.org/repos/asf/ambari/blob/9614eb6a/ambari-web/app/templates/main/service/info/summary.hbs
----------------------------------------------------------------------
diff --git a/ambari-web/app/templates/main/service/info/summary.hbs b/ambari-web/app/templates/main/service/info/summary.hbs
index d3b5c06..eee8c49 100644
--- a/ambari-web/app/templates/main/service/info/summary.hbs
+++ b/ambari-web/app/templates/main/service/info/summary.hbs
@@ -92,34 +92,36 @@
</div>
{{/if}}
{{#if isServiceWithEnhancedWidgets}}
- <div class="btn-group pull-right actions">
- <button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown">
- {{t common.actions}} <span class="caret"></span>
- </button>
- <ul class="dropdown-menu">
- {{#each option in view.widgetActions}}
- <li {{bindAttr class="option.layouts:dropdown-submenu"}}>
- {{#if option.isAction}}
- <a href="#" {{action doWidgetAction option.action target="view"}}>
- <i {{bindAttr class="option.class"}}></i>
- {{option.label}}
- </a>
- {{#if option.layouts}}
- <ul class="dropdown-menu">
- {{#each layout in option.layouts}}
- <li>
- <a href="javascript:void(0);">
- {{layout.layoutName}}
- </a>
- </li>
- {{/each}}
- </ul>
+ {{#if isAmbariMetricsInstalled}}
+ <div class="btn-group pull-right actions">
+ <button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown">
+ {{t common.actions}} <span class="caret"></span>
+ </button>
+ <ul class="dropdown-menu">
+ {{#each option in view.widgetActions}}
+ <li {{bindAttr class="option.layouts:dropdown-submenu"}}>
+ {{#if option.isAction}}
+ <a href="#" {{action doWidgetAction option.action target="view"}}>
+ <i {{bindAttr class="option.class"}}></i>
+ {{option.label}}
+ </a>
+ {{#if option.layouts}}
+ <ul class="dropdown-menu">
+ {{#each layout in option.layouts}}
+ <li>
+ <a href="javascript:void(0);">
+ {{layout.layoutName}}
+ </a>
+ </li>
+ {{/each}}
+ </ul>
+ {{/if}}
{{/if}}
- {{/if}}
- </li>
- {{/each}}
- </ul>
- </div>
+ </li>
+ {{/each}}
+ </ul>
+ </div>
+ {{/if}}
{{/if}}
</div>
<div>
@@ -130,11 +132,13 @@
{{view widget.viewClass contentBinding="widget" idBinding="widget.id"}}
</div>
{{/each}}
- <div class="span2p4">
- <button id="add-widget-action-box" class="btn btn-default" {{action "goToWidgetsBrowser" controller.content target="controller"}}
- rel="add-widget-tooltip" {{translateAttr data-original-title="dashboard.widgets.addButton.tooltip"}}>
- <i class="icon-plus"></i></button>
- </div>
+ {{#if isAmbariMetricsInstalled}}
+ <div class="span2p4">
+ <button id="add-widget-action-box" class="btn btn-default" {{action "goToWidgetsBrowser" controller.content target="controller"}}
+ rel="add-widget-tooltip" {{translateAttr data-original-title="dashboard.widgets.addButton.tooltip"}}>
+ <i class="icon-plus"></i></button>
+ </div>
+ {{/if}}
</div>
{{/if}}
<table class="graphs">
http://git-wip-us.apache.org/repos/asf/ambari/blob/9614eb6a/ambari-web/app/views/common/chart/linear_time.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/common/chart/linear_time.js b/ambari-web/app/views/common/chart/linear_time.js
index 653447d..8487f82 100644
--- a/ambari-web/app/views/common/chart/linear_time.js
+++ b/ambari-web/app/views/common/chart/linear_time.js
@@ -153,6 +153,10 @@ App.ChartLinearTimeView = Ember.View.extend({
didInsertElement: function () {
this.loadData();
this.registerGraph();
+ App.tooltip(this.$("[rel='ZoomInTooltip']"), {
+ placement: 'left',
+ template: '<div class="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner graph-tooltip"></div></div>'
+ });
},
registerGraph: function() {
@@ -212,15 +216,18 @@ App.ChartLinearTimeView = Ember.View.extend({
* @param type Can be any of 'warn', 'error', 'info', 'success'
* @param title Bolded title for the message
* @param message String representing the message
+ * @param tooltip Tooltip content
* @type: Function
*/
- _showMessage: function(type, title, message) {
+ _showMessage: function(type, title, message, tooltip) {
var chartOverlay = '#' + this.get('id');
var chartOverlayId = chartOverlay + '-chart';
var chartOverlayY = chartOverlay + '-yaxis';
var chartOverlayX = chartOverlay + '-xaxis';
var chartOverlayLegend = chartOverlay + '-legend';
var chartOverlayTimeline = chartOverlay + '-timeline';
+ var tooltipTitle = tooltip ? tooltip : Em.I18n.t('graphs.tooltip.title');
+ var chartContent = '';
if (this.get('isPopup')) {
chartOverlayId += this.get('popupSuffix');
chartOverlayY += this.get('popupSuffix');
@@ -244,7 +251,13 @@ App.ChartLinearTimeView = Ember.View.extend({
break;
}
$(chartOverlayId+', '+chartOverlayY+', '+chartOverlayX+', '+chartOverlayLegend+', '+chartOverlayTimeline).html('');
- $(chartOverlayId).append('<div class=\"alert '+typeClass+'\"><strong>'+title+'</strong> '+message+'</div>');
+ chartContent += '<div class=\"alert ' + typeClass + '\">';
+ if (title) {
+ chartContent += '<strong>' + title + '</strong> ';
+ }
+ chartContent += message + '</div>';
+ $(chartOverlayId).append(chartContent);
+ $(chartOverlayId).parent().attr('data-original-title', tooltipTitle);
},
/**
@@ -369,17 +382,19 @@ App.ChartLinearTimeView = Ember.View.extend({
if (this.checkSeries(seriesData)) {
// Check container exists (may be not, if we go to another page and wait while graphs loading)
if (graph_container.length) {
+ var container = $("#" + this.get('id') + "-container");
this.draw(seriesData);
this.set('hasData', true);
//move yAxis value lower to make them fully visible
- $("#" + this.get('id') + "-container").find('.y_axis text').attr('y',8);
+ container.find('.y_axis text').attr('y', 8);
+ container.attr('data-original-title', Em.I18n.t('graphs.tooltip.title'));
}
}
else {
this.set('isReady', true);
//if Axis X time interval is default(60 minutes)
if(this.get('timeUnitSeconds') === 3600){
- this._showMessage('info', this.t('graphs.noData.title'), this.t('graphs.noData.message'));
+ this._showMessage('info', null, this.t('graphs.noData.message'), this.t('graphs.noData.tooltip.title'));
this.set('hasData', false);
}
else {
http://git-wip-us.apache.org/repos/asf/ambari/blob/9614eb6a/ambari-web/app/views/common/widget/graph_widget_view.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/common/widget/graph_widget_view.js b/ambari-web/app/views/common/widget/graph_widget_view.js
index 29934c6..7b124ab 100644
--- a/ambari-web/app/views/common/widget/graph_widget_view.js
+++ b/ambari-web/app/views/common/widget/graph_widget_view.js
@@ -284,7 +284,10 @@ App.GraphWidgetView = Em.View.extend(App.WidgetMixin, {
if (self.get('isPreview')) {
App.tooltip(this.$("[rel='ZoomInTooltip']"), 'disable');
} else {
- App.tooltip(this.$("[rel='ZoomInTooltip']"), {placement : 'left'});
+ App.tooltip(this.$("[rel='ZoomInTooltip']"), {
+ placement: 'left',
+ template: '<div class="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner graph-tooltip"></div></div>'
+ });
}
});
}.observes('parentView.data')
http://git-wip-us.apache.org/repos/asf/ambari/blob/9614eb6a/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 558d477..b63e89f 100644
--- a/ambari-web/app/views/main/dashboard/widget.js
+++ b/ambari-web/app/views/main/dashboard/widget.js
@@ -172,7 +172,10 @@ App.DashboardWidgetView = Em.View.extend({
}),
didInsertElement: function () {
- App.tooltip(this.$("[rel='ZoomInTooltip']"), {placement : 'left'});
+ App.tooltip(this.$("[rel='ZoomInTooltip']"), {
+ placement: 'left',
+ template: '<div class="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner graph-tooltip"></div></div>'
+ });
},
willDestroyElement : function() {
http://git-wip-us.apache.org/repos/asf/ambari/blob/9614eb6a/ambari-web/test/mixins/common/widgets/widget_section_test.js
----------------------------------------------------------------------
diff --git a/ambari-web/test/mixins/common/widgets/widget_section_test.js b/ambari-web/test/mixins/common/widgets/widget_section_test.js
new file mode 100644
index 0000000..53c1395
--- /dev/null
+++ b/ambari-web/test/mixins/common/widgets/widget_section_test.js
@@ -0,0 +1,63 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+var App = require('app');
+
+require('mixins/common/widgets/widget_section');
+
+describe('App.WidgetSectionMixin', function () {
+
+ var obj;
+
+ beforeEach(function () {
+ obj = Em.Object.create(App.WidgetSectionMixin);
+ });
+
+ describe('#isAmbariMetricsInstalled', function () {
+
+ var cases = [
+ {
+ services: [],
+ isAmbariMetricsInstalled: false,
+ title: 'Ambari Metrics not installed'
+ },
+ {
+ services: [
+ {
+ serviceName: 'AMBARI_METRICS'
+ }
+ ],
+ isAmbariMetricsInstalled: true,
+ title: 'Ambari Metrics installed'
+ }
+ ];
+
+ afterEach(function () {
+ App.Service.find.restore();
+ });
+
+ cases.forEach(function (item) {
+ it(item.title, function () {
+ sinon.stub(App.Service, 'find').returns(item.services);
+ expect(obj.get('isAmbariMetricsInstalled')).to.equal(item.isAmbariMetricsInstalled);
+ });
+ });
+
+ });
+
+});
\ No newline at end of file