@netdata/charts
Version:
Netdata frontend SDK and chart utilities
85 lines • 3.75 kB
JavaScript
import normalizeSelectedInstances from "./normalizeSelectedInstances";
describe("normalizeSelectedInstances", function () {
var mockInstances = {
"system.cpu@node1": {
id: "system.cpu",
nm: "cpu_usage@Node 1"
},
"system.cpu@node2": {
id: "system.cpu",
nm: "cpu_usage@Node 2"
},
"system.memory@node1": {
id: "system.memory",
nm: "memory_usage@Node 1"
},
"app.nginx@node3": {
id: "app.nginx",
nm: "nginx_requests@Node 3"
}
};
it("should return empty array for empty selectedInstances", function () {
var result = normalizeSelectedInstances([], mockInstances);
expect(result).toEqual([]);
});
it("should return selectedInstances if instances is not an object", function () {
var selected = ["system.cpu@node1"];
var result = normalizeSelectedInstances(selected, null);
expect(result).toEqual(selected);
});
it("should keep exact key match", function () {
var selected = ["system.cpu@node1"];
var result = normalizeSelectedInstances(selected, mockInstances);
expect(result).toEqual(["system.cpu@node1"]);
});
it("should match instance id without @ to all instances with that id", function () {
var selected = ["system.cpu"];
var result = normalizeSelectedInstances(selected, mockInstances);
expect(result.sort()).toEqual(["system.cpu@node1", "system.cpu@node2"]);
});
it("should match with prefix wildcard *", function () {
var selected = ["system.cpu*"];
var result = normalizeSelectedInstances(selected, mockInstances);
expect(result.sort()).toEqual(["system.cpu@node1", "system.cpu@node2"]);
});
it("should match with suffix wildcard *", function () {
var selected = ["*@node1"];
var result = normalizeSelectedInstances(selected, mockInstances);
expect(result.sort()).toEqual(["system.cpu@node1", "system.memory@node1"]);
});
it("should match with both wildcards *", function () {
var selected = ["*cpu*"];
var result = normalizeSelectedInstances(selected, mockInstances);
expect(result.sort()).toEqual(["system.cpu@node1", "system.cpu@node2"]);
});
it("should match instance name", function () {
var selected = ["cpu_usage"];
var result = normalizeSelectedInstances(selected, mockInstances);
expect(result.sort()).toEqual(["system.cpu@node1", "system.cpu@node2"]);
});
it("should match instance name with wildcard", function () {
var selected = ["*Node 1"];
var result = normalizeSelectedInstances(selected, mockInstances);
expect(result.sort()).toEqual(["system.cpu@node1", "system.memory@node1"]);
});
it("should remove duplicates", function () {
var selected = ["system.cpu", "system.cpu@node1", "system.cpu*"];
var result = normalizeSelectedInstances(selected, mockInstances);
expect(result.sort()).toEqual(["system.cpu@node1", "system.cpu@node2"]);
});
it("should omit selections that dont match anything", function () {
var selected = ["nonexistent", "system.cpu"];
var result = normalizeSelectedInstances(selected, mockInstances);
expect(result.sort()).toEqual(["system.cpu@node1", "system.cpu@node2"]);
});
it("should handle multiple different selections", function () {
var selected = ["system.memory", "app.nginx@node3"];
var result = normalizeSelectedInstances(selected, mockInstances);
expect(result.sort()).toEqual(["app.nginx@node3", "system.memory@node1"]);
});
it("should skip invalid selections", function () {
var selected = ["system.cpu", null, "", undefined, "app.nginx"];
var result = normalizeSelectedInstances(selected, mockInstances);
expect(result.sort()).toEqual(["app.nginx@node3", "system.cpu@node1", "system.cpu@node2"]);
});
});