@netdata/charts
Version:
Netdata frontend SDK and chart utilities
129 lines (127 loc) • 3.74 kB
JavaScript
;
var _anomaly = _interopRequireDefault(require("./anomaly"));
function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
describe("anomaly plotter", function () {
var mockChartUI;
var mockPlotter;
var mockCtx;
beforeEach(function () {
mockCtx = {
strokeStyle: "black",
fillStyle: "black",
fillRect: jest.fn(),
strokeRect: jest.fn()
};
mockPlotter = {
setName: "ANOMALY_RATE",
drawingContext: mockCtx,
points: [{
canvasx: 10,
xval: 1000
}, {
canvasx: 20,
xval: 2000
}]
};
mockChartUI = {
chart: {
getPayloadDimensionIds: function getPayloadDimensionIds() {
return ["dim1", "dim2"];
},
getAttribute: function getAttribute() {
return [];
},
isDimensionVisible: function isDimensionVisible() {
return true;
},
getThemeAttribute: function getThemeAttribute() {
return "#ff0000";
},
getPayload: function getPayload() {
return {
all: [[1000, {
arp: 25
}, {
arp: 50
}], [2000, {
arp: 75
}, {
arp: 100
}]]
};
},
getClosestRow: function getClosestRow(xval) {
return xval === 1000 ? 0 : 1;
}
}
};
});
it("returns early if no chartUI", function () {
var plotter = (0, _anomaly["default"])(null);
expect(function () {
return plotter(mockPlotter);
}).not.toThrow();
});
it("returns early if setName is not ANOMALY_RATE", function () {
mockPlotter.setName = "OTHER";
var plotter = (0, _anomaly["default"])(mockChartUI);
plotter(mockPlotter);
expect(mockCtx.fillRect).not.toHaveBeenCalled();
});
it("returns early if no points", function () {
mockPlotter.points = [];
var plotter = (0, _anomaly["default"])(mockChartUI);
plotter(mockPlotter);
expect(mockCtx.fillRect).not.toHaveBeenCalled();
});
it("returns early if less than 2 points", function () {
mockPlotter.points = [{
canvasx: 10,
xval: 1000
}];
var plotter = (0, _anomaly["default"])(mockChartUI);
plotter(mockPlotter);
expect(mockCtx.fillRect).not.toHaveBeenCalled();
});
it("renders anomaly rate bars", function () {
var plotter = (0, _anomaly["default"])(mockChartUI);
plotter(mockPlotter);
expect(mockCtx.fillRect).toHaveBeenCalled();
expect(mockCtx.strokeRect).toHaveBeenCalled();
expect(mockCtx.fillRect).toHaveBeenCalledTimes(2);
});
it("handles selected legend dimensions", function () {
mockChartUI.chart.getAttribute = function () {
return ["dim1"];
};
var plotter = (0, _anomaly["default"])(mockChartUI);
plotter(mockPlotter);
expect(mockCtx.fillRect).toHaveBeenCalled();
expect(mockCtx.strokeRect).toHaveBeenCalled();
});
it("calculates max anomaly rate value correctly", function () {
var plotter = (0, _anomaly["default"])(mockChartUI);
plotter(mockPlotter);
// Should use max arp value from selected dimensions
expect(mockCtx.fillRect).toHaveBeenCalledTimes(2);
expect(mockCtx.strokeRect).toHaveBeenCalledTimes(2);
});
it("handles zero anomaly values", function () {
mockChartUI.chart.getPayload = function () {
return {
all: [[1000, {
arp: 0
}, {
arp: 0
}], [2000, {
arp: 0
}, {
arp: 0
}]]
};
};
var plotter = (0, _anomaly["default"])(mockChartUI);
plotter(mockPlotter);
expect(mockCtx.fillRect).toHaveBeenCalled();
});
});