AMBARI-17948. User is able to create widget with no metrics included (alexantonenko)
diff --git a/ambari-web/app/controllers/main/service/widgets/create/step2_controller.js b/ambari-web/app/controllers/main/service/widgets/create/step2_controller.js
index 68233f6..29a3408 100644
--- a/ambari-web/app/controllers/main/service/widgets/create/step2_controller.js
+++ b/ambari-web/app/controllers/main/service/widgets/create/step2_controller.js
@@ -124,7 +124,8 @@
* @returns {boolean}
*/
isExpressionComplete: function (expression) {
- return Boolean(expression && !expression.get('isInvalid') && !expression.get('isEmpty'));
+ return Boolean(expression && !expression.get('isInvalid') && !expression.get('isEmpty')
+ && expression.get('data')&& expression.get('data').someProperty('isMetric'));
},
/**
diff --git a/ambari-web/app/styles/enhanced_service_dashboard.less b/ambari-web/app/styles/enhanced_service_dashboard.less
index 3e14b87..07dacf6 100644
--- a/ambari-web/app/styles/enhanced_service_dashboard.less
+++ b/ambari-web/app/styles/enhanced_service_dashboard.less
@@ -431,7 +431,7 @@
.metric-field {
height: 85%;
background-color: #f5f5f5;
- overflow: scroll;
+ overflow: auto;
border: 1px solid @border-color;
}
.metric-instance {
@@ -732,6 +732,7 @@
display: block;
color: #808080;
overflow-x: hidden;
+ overflow-y: auto;
height: 40px;
white-space: pre-line;
}
diff --git a/ambari-web/test/controllers/main/service/widgets/create/step2_controller_test.js b/ambari-web/test/controllers/main/service/widgets/create/step2_controller_test.js
index e717f02..57b64af 100644
--- a/ambari-web/test/controllers/main/service/widgets/create/step2_controller_test.js
+++ b/ambari-web/test/controllers/main/service/widgets/create/step2_controller_test.js
@@ -152,23 +152,72 @@
var testCases = [
{
expression: null,
- result: false
+ result: false,
+ title: 'no expression'
},
{
expression: Em.Object.create({isInvalid: true}),
- result: false
+ result: false,
+ title: 'invalid expression, no data array'
},
{
expression: Em.Object.create({isInvalid: false, isEmpty: false}),
- result: true
+ result: false,
+ title: 'no data array'
},
{
expression: Em.Object.create({isInvalid: false, isEmpty: true}),
- result: false
+ result: false,
+ title: 'empty expression'
+ },
+ {
+ expression: Em.Object.create({isInvalid: true, data: []}),
+ result: false,
+ title: 'invalid expression, empty data array'
+ },
+ {
+ expression: Em.Object.create({isInvalid: false, isEmpty: false, data: []}),
+ result: false,
+ title: 'empty data array'
+ },
+ {
+ expression: Em.Object.create({isInvalid: false, isEmpty: true, data: []}),
+ result: false,
+ title: 'empty expression and data array'
+ },
+ {
+ expression: Em.Object.create({isInvalid: true, data: [{isMetric: false}]}),
+ result: false,
+ title: 'invalid expression, no metrics'
+ },
+ {
+ expression: Em.Object.create({isInvalid: false, isEmpty: false, data: [{isMetric: false}]}),
+ result: false,
+ title: 'no metrics'
+ },
+ {
+ expression: Em.Object.create({isInvalid: false, isEmpty: true, data: [{isMetric: false}]}),
+ result: false,
+ title: 'empty expression, no metrics'
+ },
+ {
+ expression: Em.Object.create({isInvalid: true, data: [{isMetric: false}, {isMetric: true}]}),
+ result: false,
+ title: 'invalid expression'
+ },
+ {
+ expression: Em.Object.create({isInvalid: false, isEmpty: false, data: [{isMetric: false}, {isMetric: true}]}),
+ result: true,
+ title: 'valid expression'
+ },
+ {
+ expression: Em.Object.create({isInvalid: false, isEmpty: true, data: [{isMetric: false}, {isMetric: true}]}),
+ result: false,
+ title: 'empty expression, valid data array'
}
];
testCases.forEach(function (test) {
- it("expression = " + test.expression, function () {
+ it(test.title, function () {
expect(controller.isExpressionComplete(test.expression)).to.equal(test.result);
});
});