From 0b285845d1bda46a553881621b7fcaa7dab5a172 Mon Sep 17 00:00:00 2001 From: carl bergquist Date: Wed, 9 Dec 2015 14:21:48 +0100 Subject: [PATCH] adds spec for query builder --- .../datasource/elasticsearch/metric_agg.js | 2 +- .../datasource/elasticsearch/query_builder.js | 6 ++- .../specs/query_builder_specs.ts | 47 +++++++++++++++++-- 3 files changed, 49 insertions(+), 6 deletions(-) diff --git a/public/app/plugins/datasource/elasticsearch/metric_agg.js b/public/app/plugins/datasource/elasticsearch/metric_agg.js index 6db0ad7b48d..149623bdd9b 100644 --- a/public/app/plugins/datasource/elasticsearch/metric_agg.js +++ b/public/app/plugins/datasource/elasticsearch/metric_agg.js @@ -37,7 +37,7 @@ function (angular, _, queryDef) { $scope.settingsLinkText = ''; $scope.aggDef = _.findWhere($scope.metricAggTypes, {value: $scope.agg.type}); - if (!$scope.agg.field && $scope.agg.type !== 'moving_avg') { + if (!$scope.agg.field) { $scope.agg.field = 'select field'; } diff --git a/public/app/plugins/datasource/elasticsearch/query_builder.js b/public/app/plugins/datasource/elasticsearch/query_builder.js index 5cd7d1dae50..967f8851495 100644 --- a/public/app/plugins/datasource/elasticsearch/query_builder.js +++ b/public/app/plugins/datasource/elasticsearch/query_builder.js @@ -171,7 +171,11 @@ function () { var metricAgg = null; if (metric.type === 'moving_avg') { - metricAgg = {buckets_path: "1"}; + if (metric.mavgSource && /^\d*$/.test(metric.mavgSource)) { + metricAgg = { buckets_path: metric.mavgSource }; + } else { + continue; + } } else { metricAgg = {field: metric.field}; } diff --git a/public/app/plugins/datasource/elasticsearch/specs/query_builder_specs.ts b/public/app/plugins/datasource/elasticsearch/specs/query_builder_specs.ts index 0bda6ab73b1..3c2c52916cb 100644 --- a/public/app/plugins/datasource/elasticsearch/specs/query_builder_specs.ts +++ b/public/app/plugins/datasource/elasticsearch/specs/query_builder_specs.ts @@ -158,11 +158,16 @@ describe('ElasticQueryBuilder', function() { it('with moving average', function() { var query = builder.build({ metrics: [ + { + id: '3', + type: 'sum', + field: '@value' + }, { id: '2', type: 'moving_avg', - field: '@value', - aggregation: 'sum' + field: '3', + mavgSource: '3' } ], bucketAggs: [ @@ -171,9 +176,43 @@ describe('ElasticQueryBuilder', function() { }); var firstLevel = query.aggs["3"]; - console.log(JSON.stringify(query)); + expect(firstLevel.aggs["2"]).not.to.be(undefined); expect(firstLevel.aggs["2"].moving_avg).not.to.be(undefined); - expect(firstLevel.aggs["2"].moving_avg.buckets_path).to.be("99"); + expect(firstLevel.aggs["2"].moving_avg.buckets_path).to.be("3"); + }); + + it('with broken moving average', function() { + var query = builder.build({ + metrics: [ + { + id: '3', + type: 'sum', + field: '@value' + }, + { + id: '2', + type: 'moving_avg', + field: '3', + mavgSource: '3' + }, + { + id: '4', + type: 'moving_avg', + field: '3', + mavgSource: 'Metric to apply moving average' + } + ], + bucketAggs: [ + { type: 'date_histogram', field: '@timestamp', id: '3' } + ], + }); + + var firstLevel = query.aggs["3"]; + + expect(firstLevel.aggs["2"]).not.to.be(undefined); + expect(firstLevel.aggs["2"].moving_avg).not.to.be(undefined); + expect(firstLevel.aggs["2"].moving_avg.buckets_path).to.be("3"); + expect(firstLevel.aggs["4"]).to.be(undefined); }); });