UNPKG

@netdata/charts

Version:

Netdata frontend SDK and chart utilities

127 lines (126 loc) 4.22 kB
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } import unitConversion from "./index"; import { makeTestChart } from "@jest/testUtilities"; describe("unitConversion", function () { var chart; beforeEach(function () { var testChart = makeTestChart({ attributes: { units: ["By"], unitsCurrent: ["By"], unitsConversion: "original", unitsStsByContext: {}, dbUnitsStsByContext: {}, dimensionIds: ["cpu", "memory"], visibleDimensionIds: ["cpu", "memory"] } }); chart = testChart.chart; }); it("returns a cleanup function", function () { var cleanup = unitConversion(chart); expect(_typeof(cleanup)).toBe("function"); expect(function () { return cleanup(); }).not.toThrow(); }); it("sets up unit conversion attributes", function () { unitConversion(chart); expect(chart.getAttribute("unitsConversionMethod")).toBeDefined(); expect(chart.getAttribute("dbUnitsConversionMethod")).toBeDefined(); }); it("handles static value range", function () { chart.updateAttribute("staticValueRange", [0, 100]); unitConversion(chart); chart.trigger("yAxisChange", 50, 150); expect(chart.getAttribute("min")).toBe(0); expect(chart.getAttribute("max")).toBe(100); }); it("updates conversion when visible dimensions change", function () { var cleanup = unitConversion(chart); chart.updateAttribute("visibleDimensionIds", ["cpu"]); chart.trigger("visibleDimensionsChanged"); expect(chart.getAttribute("unitsConversionMethod")).toBeDefined(); cleanup(); }); it("updates conversion on y-axis change", function () { var cleanup = unitConversion(chart); chart.trigger("yAxisChange", 10, 90); expect(chart.getAttribute("min")).toBe(10); expect(chart.getAttribute("max")).toBe(90); cleanup(); }); it("handles missing payload data gracefully", function () { var testChart = makeTestChart({ attributes: { units: ["By"] } }); var cleanup = unitConversion(testChart.chart); expect(function () { testChart.chart.trigger("yAxisChange", 0, 100); }).not.toThrow(); cleanup(); }); it("uses dimension min/max when available", function () { var mockPayload = { byDimension: { cpu: { min: 20, max: 80 }, memory: { min: 10, max: 90 } } }; chart.getPayload = function () { return mockPayload; }; var cleanup = unitConversion(chart); chart.trigger("visibleDimensionsChanged"); // The implementation handles min/max conversion logic expect(_typeof(chart.getAttribute("min"))).toBe("number"); expect(_typeof(chart.getAttribute("max"))).toBe("number"); cleanup(); }); it("handles context-specific units", function () { chart.updateAttribute("unitsStsByContext", { cpu: { units: ["%"], min: 0, max: 100 }, memory: { units: ["By"], min: 0, max: 1024 } }); unitConversion(chart); var unitsByContext = chart.getAttribute("unitsByContext"); expect(unitsByContext).toBeDefined(); expect(_typeof(unitsByContext)).toBe("object"); }); it("processes both units and dbUnits", function () { chart.updateAttribute("dbUnitsStsByContext", { cpu: { units: ["ms"] } }); unitConversion(chart); expect(chart.getAttribute("unitsConversionMethod")).toBeDefined(); expect(chart.getAttribute("dbUnitsConversionMethod")).toBeDefined(); expect(chart.getAttribute("dbUnitsByContext")).toBeDefined(); }); it("respects chart state on initialization", function () { chart.updateAttributes({ units: ["%"], staticValueRange: [0, 100] }); unitConversion(chart); var method = chart.getAttribute("unitsConversionMethod"); expect(method).toBeDefined(); }); });