UNPKG

@netdata/charts

Version:

Netdata frontend SDK and chart utilities

129 lines (127 loc) 3.74 kB
"use strict"; 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(); }); });