UNPKG

@netdata/charts

Version:

Netdata frontend SDK and chart utilities

156 lines (155 loc) 5.29 kB
"use strict"; var _index = _interopRequireDefault(require("./index")); var _testUtilities = require("@jest/testUtilities"); function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; } 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); } describe("makeChart", function () { var chart; var sdk; beforeEach(function () { var testChart = (0, _testUtilities.makeTestChart)(); chart = testChart.chart; sdk = testChart.sdk; }); it("creates chart with required methods", function () { expect(chart).toHaveProperty("getUpdateEvery"); expect(chart).toHaveProperty("getDateWindow"); expect(chart).toHaveProperty("startAutofetch"); expect(chart).toHaveProperty("getUI"); expect(chart).toHaveProperty("setUI"); expect(chart).toHaveProperty("focus"); expect(chart).toHaveProperty("blur"); expect(chart).toHaveProperty("activate"); expect(chart).toHaveProperty("deactivate"); expect(chart).toHaveProperty("getUnits"); expect(chart).toHaveProperty("getThemeIndex"); expect(chart).toHaveProperty("intl"); }); it("setUI and getUI work together", function () { var mockUI = { test: true }; chart.setUI(mockUI); expect(chart.getUI()).toBe(mockUI); }); it("makeSubChart creates new chart with UI", function () { var subChart = chart.makeSubChart({ test: true }); expect(subChart).toBeDefined(); expect(_typeof(subChart.getUI)).toBe("function"); expect(_typeof(subChart.setUI)).toBe("function"); expect(subChart.getUI()).toBeDefined(); }); it("getUpdateEvery returns correct value when loaded", function () { chart.updateAttributes({ loaded: true, updateEvery: 5, viewUpdateEvery: null }); var result = chart.getUpdateEvery(); expect(result).toBe(5000); }); it("getUpdateEvery returns viewUpdateEvery when available", function () { chart.updateAttributes({ loaded: true, updateEvery: 5, viewUpdateEvery: 10 }); var result = chart.getUpdateEvery(); expect(result).toBe(10000); }); it("getUpdateEvery returns 0 when not loaded", function () { chart.updateAttributes({ loaded: false, updateEvery: 5 }); var result = chart.getUpdateEvery(); expect(result).toBe(0); }); it("getThemeIndex returns correct index for theme", function () { chart.updateAttribute("theme", "dark"); var result = chart.getThemeIndex(); expect(result).toBe(1); }); it("getThemeIndex returns default for unknown theme", function () { chart.updateAttribute("theme", "unknown"); var result = chart.getThemeIndex(); expect(result).toBe(0); }); it("focus does not update when already focused and hovering", function () { chart.updateAttributes({ focused: true, hovering: true }); var spy = jest.spyOn(chart, "updateAttributes"); chart.focus({ type: "focus" }); expect(spy).not.toHaveBeenCalled(); }); it("focus updates attributes", function () { chart.updateAttribute("focused", false); chart.updateAttribute("hovering", false); chart.focus({ type: "focus" }); expect(chart.getAttribute("focused")).toBe(true); expect(chart.getAttribute("hovering")).toBe(true); }); it("blur does not update when not focused or hovering", function () { chart.updateAttributes({ focused: false, hovering: false }); var spy = jest.spyOn(chart, "updateAttributes"); chart.blur({ type: "blur" }); expect(spy).not.toHaveBeenCalled(); }); it("blur updates attributes", function () { chart.updateAttribute("focused", true); chart.updateAttribute("hovering", true); chart.blur({ type: "blur" }); expect(chart.getAttribute("focused")).toBe(false); expect(chart.getAttribute("hovering")).toBe(false); }); it("activate sets active to true", function () { chart.updateAttribute("active", false); chart.activate(); expect(chart.getAttribute("active")).toBe(true); }); it("deactivate sets active to false", function () { chart.updateAttribute("active", true); chart.deactivate(); expect(chart.getAttribute("active")).toBe(false); }); it("getUnits returns units from attributes", function () { chart.updateAttribute("units", "GB"); var units = chart.getUnits(); expect(units).toBe("GB"); }); it("intl returns fallback when no translation", function () { var result = chart.intl("test.key", { fallback: "Default Text" }); expect(result).toBe("Default Text"); }); it("intl returns pluralized key when count > 1", function () { var result = chart.intl("item", { count: 2, pluralize: true }); expect(result).toBe("items"); }); it("intl uses translation when available", function () { chart.updateAttribute("en", { "test.key": "Translated Text" }); var result = chart.intl("test.key"); expect(result).toBe("Translated Text"); }); });