Commit be330b6a by Torkel Ödegaard

refactoring and more unit tests for graphite functions

parent 7a2011d9
......@@ -2,10 +2,10 @@ define([
'angular',
'underscore',
'config',
'../services/graphite/graphiteFuncs',
'../services/graphite/gfunc',
'../services/graphite/parser'
],
function (angular, _, config, graphiteFuncs, Parser) {
function (angular, _, config, gfunc, Parser) {
'use strict';
var module = angular.module('kibana.controllers');
......@@ -13,7 +13,7 @@ function (angular, _, config, graphiteFuncs, Parser) {
module.controller('GraphiteTargetCtrl', function($scope, $http, filterSrv, graphiteSrv) {
$scope.init = function() {
$scope.funcCategories = graphiteFuncs.getCategories();
$scope.funcCategories = gfunc.getCategories();
parseTarget();
};
......@@ -56,7 +56,7 @@ function (angular, _, config, graphiteFuncs, Parser) {
switch(astNode.type) {
case 'function':
var innerFunc = graphiteFuncs.createFuncInstance(astNode.name);
var innerFunc = gfunc.createFuncInstance(astNode.name);
_.each(astNode.params, function(param, index) {
parseTargeRecursive(param, innerFunc, index);
......@@ -226,7 +226,7 @@ function (angular, _, config, graphiteFuncs, Parser) {
};
$scope.addFunction = function(funcDef) {
$scope.functions.push(graphiteFuncs.createFuncInstance(funcDef));
$scope.functions.push(gfunc.createFuncInstance(funcDef));
$scope.targetChanged();
};
......
......@@ -14,6 +14,9 @@ function (_) {
};
function addFuncDef(funcDef) {
funcDef.params = funcDef.params || [];
funcDef.defaultParams = funcDef.defaultParams || [];
if (funcDef.category) {
funcDef.category.push(funcDef);
}
......@@ -38,8 +41,6 @@ function (_) {
addFuncDef({
name: "holtWintersForecast",
category: categories.Calculate,
params: [],
defaultParams: []
});
addFuncDef({
......@@ -60,16 +61,12 @@ function (_) {
name: 'sumSeries',
shortName: 'sum',
category: categories.Combine,
params: [],
defaultParams: []
});
addFuncDef({
name: 'averageSeries',
shortName: 'avg',
category: categories.Combine,
params: [],
defaultParams: []
});
addFuncDef({
......@@ -106,15 +103,11 @@ function (_) {
addFuncDef({
name: 'integral',
category: categories.Transform,
params: [],
defaultParams: []
});
addFuncDef({
name: 'derivate',
category: categories.Transform,
params: [],
defaultParams: []
});
addFuncDef({
......@@ -150,15 +143,14 @@ function (_) {
};
return {
createFuncInstance: function(name) {
if (_.isString(name)) {
var funcDef = index[name];
if (!funcDef) {
createFuncInstance: function(funcDef) {
if (_.isString(funcDef)) {
if (!index[funcDef]) {
throw { message: 'Method not found ' + name };
}
name = funcDef;
funcDef = index[funcDef];
}
return new FuncInstance(name);
return new FuncInstance(funcDef);
},
getCategories: function() {
......
......@@ -8,6 +8,7 @@ module.exports = function(config) {
files: [
'test/test-main.js',
{pattern: 'app/**/*.js', included: false},
{pattern: 'vendor/**/*.js', included: false},
{pattern: 'test/**/*.js', included: false}
],
......
define([
'app/services/graphite/gfunc'
], function(gfunc) {
describe('when creating func instance from func namae', function() {
it('should return func instance', function() {
var func = gfunc.createFuncInstance('sumSeries');
expect(func).to.be.ok();
expect(func.def.name).to.equal('sumSeries');
expect(func.def.params.length).to.equal(0);
expect(func.def.defaultParams.length).to.equal(0);
expect(func.def.defaultParams.length).to.equal(0);
});
it('should return func instance with shortName', function() {
var func = gfunc.createFuncInstance('sum');
expect(func).to.be.ok();
});
it('should return func instance from funcDef', function() {
var func = gfunc.createFuncInstance('sum');
var func = gfunc.createFuncInstance(func.def);
expect(func).to.be.ok();
});
it('func instance should have text representation', function() {
var func = gfunc.createFuncInstance('groupByNode');
func.params[0] = 5;
func.params[1] = 'avg';
func.updateText();
expect(func.text).to.equal("groupByNode(5, avg)");
});
});
describe('when requesting function categories', function() {
it('should return function categories', function() {
var catIndex = gfunc.getCategories();
expect(catIndex.Special.length).to.equal(3);
});
});
});
require.config({
baseUrl:'base'
baseUrl: 'base',
paths: {
underscore: 'app/components/underscore.extended',
'underscore-src': 'vendor/underscore',
},
shim: {
underscore: {
exports: '_'
},
}
});
require([
'test/specs/lexer-specs',
'test/specs/parser-specs',
'test/specs/gfunc-specs',
], function () {
window.__karma__.start();
});
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment