mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
127 lines
4.3 KiB
TypeScript
127 lines
4.3 KiB
TypeScript
import gfunc from "../gfunc";
|
|
|
|
describe("when creating func instance from func names", function() {
|
|
it("should return func instance", function() {
|
|
var func = gfunc.createFuncInstance("sumSeries");
|
|
expect(func).toBeTruthy();
|
|
expect(func.def.name).toEqual("sumSeries");
|
|
expect(func.def.params.length).toEqual(5);
|
|
expect(func.def.defaultParams.length).toEqual(1);
|
|
});
|
|
|
|
it("should return func instance with shortName", function() {
|
|
var func = gfunc.createFuncInstance("sum");
|
|
expect(func).toBeTruthy();
|
|
});
|
|
|
|
it("should return func instance from funcDef", function() {
|
|
var func = gfunc.createFuncInstance("sum");
|
|
var func2 = gfunc.createFuncInstance(func.def);
|
|
expect(func2).toBeTruthy();
|
|
});
|
|
|
|
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).toEqual("groupByNode(5, avg)");
|
|
});
|
|
});
|
|
|
|
describe("when rendering func instance", function() {
|
|
it("should handle single metric param", function() {
|
|
var func = gfunc.createFuncInstance("sumSeries");
|
|
expect(func.render("hello.metric")).toEqual("sumSeries(hello.metric)");
|
|
});
|
|
|
|
it("should include default params if options enable it", function() {
|
|
var func = gfunc.createFuncInstance("scaleToSeconds", {
|
|
withDefaultParams: true
|
|
});
|
|
expect(func.render("hello")).toEqual("scaleToSeconds(hello, 1)");
|
|
});
|
|
|
|
it("should handle int or interval params with number", function() {
|
|
var func = gfunc.createFuncInstance("movingMedian");
|
|
func.params[0] = "5";
|
|
expect(func.render("hello")).toEqual("movingMedian(hello, 5)");
|
|
});
|
|
|
|
it("should handle int or interval params with interval string", function() {
|
|
var func = gfunc.createFuncInstance("movingMedian");
|
|
func.params[0] = "5min";
|
|
expect(func.render("hello")).toEqual("movingMedian(hello, '5min')");
|
|
});
|
|
|
|
it("should handle metric param and int param and string param", function() {
|
|
var func = gfunc.createFuncInstance("groupByNode");
|
|
func.params[0] = 5;
|
|
func.params[1] = "avg";
|
|
expect(func.render("hello.metric")).toEqual(
|
|
"groupByNode(hello.metric, 5, 'avg')"
|
|
);
|
|
});
|
|
|
|
it("should handle function with no metric param", function() {
|
|
var func = gfunc.createFuncInstance("randomWalk");
|
|
func.params[0] = "test";
|
|
expect(func.render(undefined)).toEqual("randomWalk('test')");
|
|
});
|
|
|
|
it("should handle function multiple series params", function() {
|
|
var func = gfunc.createFuncInstance("asPercent");
|
|
func.params[0] = "#B";
|
|
expect(func.render("#A")).toEqual("asPercent(#A, #B)");
|
|
});
|
|
});
|
|
|
|
describe("when requesting function categories", function() {
|
|
it("should return function categories", function() {
|
|
var catIndex = gfunc.getCategories("1.0");
|
|
expect(catIndex.Special.length).toBeGreaterThan(8);
|
|
});
|
|
});
|
|
|
|
describe("when updating func param", function() {
|
|
it("should update param value and update text representation", function() {
|
|
var func = gfunc.createFuncInstance("summarize", {
|
|
withDefaultParams: true
|
|
});
|
|
func.updateParam("1h", 0);
|
|
expect(func.params[0]).toBe("1h");
|
|
expect(func.text).toBe("summarize(1h, sum, false)");
|
|
});
|
|
|
|
it("should parse numbers as float", function() {
|
|
var func = gfunc.createFuncInstance("scale");
|
|
func.updateParam("0.001", 0);
|
|
expect(func.params[0]).toBe("0.001");
|
|
});
|
|
});
|
|
|
|
describe("when updating func param with optional second parameter", function() {
|
|
it("should update value and text", function() {
|
|
var func = gfunc.createFuncInstance("aliasByNode");
|
|
func.updateParam("1", 0);
|
|
expect(func.params[0]).toBe("1");
|
|
});
|
|
|
|
it("should slit text and put value in second param", function() {
|
|
var func = gfunc.createFuncInstance("aliasByNode");
|
|
func.updateParam("4,-5", 0);
|
|
expect(func.params[0]).toBe("4");
|
|
expect(func.params[1]).toBe("-5");
|
|
expect(func.text).toBe("aliasByNode(4, -5)");
|
|
});
|
|
|
|
it("should remove second param when empty string is set", function() {
|
|
var func = gfunc.createFuncInstance("aliasByNode");
|
|
func.updateParam("4,-5", 0);
|
|
func.updateParam("", 1);
|
|
expect(func.params[0]).toBe("4");
|
|
expect(func.params[1]).toBe(undefined);
|
|
expect(func.text).toBe("aliasByNode(4)");
|
|
});
|
|
});
|