@netdata/charts
Version:
Netdata frontend SDK and chart utilities
153 lines • 5.14 kB
JavaScript
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 makeChart from "./index";
import { makeTestChart } from "@jest/testUtilities";
describe("makeChart", function () {
var chart;
var sdk;
beforeEach(function () {
var testChart = 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");
});
});