UNPKG

@netdata/charts

Version:

Netdata frontend SDK and chart utilities

197 lines (196 loc) 6.45 kB
"use strict"; var _crud = require("./crud"); 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("getValue", function () { var testObj = { simple: "value", nested: { level1: { level2: "deep value" }, array: [1, 2, 3], number: 42 }, drawer: { action: "values", tab: "window", showAdvancedStats: false } }; it("returns simple values", function () { expect((0, _crud.getValue)("simple", "default", testObj)).toBe("value"); }); it("returns nested values", function () { expect((0, _crud.getValue)("nested.level1.level2", "default", testObj)).toBe("deep value"); expect((0, _crud.getValue)("nested.number", "default", testObj)).toBe(42); }); it("returns default for non-existent paths", function () { expect((0, _crud.getValue)("nonexistent", "default", testObj)).toBe("default"); expect((0, _crud.getValue)("nested.nonexistent", "default", testObj)).toBe("default"); expect((0, _crud.getValue)("nested.level1.nonexistent", "default", testObj)).toBe("default"); }); it("returns default for null/undefined intermediate values", function () { var objWithNulls = { a: null, b: undefined, c: { d: null } }; expect((0, _crud.getValue)("a.b", "default", objWithNulls)).toBe("default"); expect((0, _crud.getValue)("b.c", "default", objWithNulls)).toBe("default"); expect((0, _crud.getValue)("c.d.e", "default", objWithNulls)).toBe("default"); }); it("handles edge cases", function () { expect((0, _crud.getValue)("", "default", testObj)).toBe("default"); expect((0, _crud.getValue)(null, "default", testObj)).toBe("default"); expect((0, _crud.getValue)(undefined, "default", testObj)).toBe("default"); expect((0, _crud.getValue)("simple", "default", null)).toBe("default"); expect((0, _crud.getValue)("simple", "default", undefined)).toBe("default"); }); it("handles drawer-specific attributes", function () { expect((0, _crud.getValue)("drawer.action", "default", testObj)).toBe("values"); expect((0, _crud.getValue)("drawer.tab", "default", testObj)).toBe("window"); expect((0, _crud.getValue)("drawer.showAdvancedStats", true, testObj)).toBe(false); }); it("returns undefined values as default", function () { var objWithUndefined = { a: undefined }; expect((0, _crud.getValue)("a", "default", objWithUndefined)).toBe("default"); }); it("handles arrays as intermediate values", function () { expect((0, _crud.getValue)("nested.array.0", "default", testObj)).toBe(1); }); }); describe("setValue", function () { it("sets simple values", function () { var obj = {}; (0, _crud.setValue)("simple", "value", obj); expect(obj.simple).toBe("value"); }); it("sets nested values", function () { var obj = {}; (0, _crud.setValue)("nested.level1.level2", "deep value", obj); expect(obj.nested.level1.level2).toBe("deep value"); }); it("creates missing parent objects", function () { var obj = {}; (0, _crud.setValue)("a.b.c.d", "value", obj); expect(obj.a.b.c.d).toBe("value"); expect(_typeof(obj.a)).toBe("object"); expect(_typeof(obj.a.b)).toBe("object"); expect(_typeof(obj.a.b.c)).toBe("object"); }); it("overwrites existing values", function () { var obj = { existing: "old" }; (0, _crud.setValue)("existing", "new", obj); expect(obj.existing).toBe("new"); }); it("handles drawer-specific attributes", function () { var obj = {}; (0, _crud.setValue)("drawer.action", "values", obj); (0, _crud.setValue)("drawer.tab", "window", obj); (0, _crud.setValue)("drawer.showAdvancedStats", true, obj); expect(obj.drawer.action).toBe("values"); expect(obj.drawer.tab).toBe("window"); expect(obj.drawer.showAdvancedStats).toBe(true); }); it("overwrites existing nested objects", function () { var obj = { drawer: { action: "old" } }; (0, _crud.setValue)("drawer.action", "new", obj); expect(obj.drawer.action).toBe("new"); }); it("handles edge cases", function () { var obj = {}; (0, _crud.setValue)("", "value", obj); (0, _crud.setValue)(null, "value", obj); (0, _crud.setValue)(undefined, "value", obj); expect(Object.keys(obj)).toHaveLength(0); }); }); describe("deleteKey", function () { it("deletes simple properties", function () { var obj = { simple: "value", keep: "me" }; (0, _crud.deleteKey)("simple", obj); expect(obj).toEqual({ keep: "me" }); }); it("deletes nested properties", function () { var obj = { drawer: { action: "values", tab: "window", showAdvancedStats: true } }; (0, _crud.deleteKey)("drawer.showAdvancedStats", obj); expect(obj.drawer).toEqual({ action: "values", tab: "window" }); }); it("deletes deeply nested properties", function () { var obj = { a: { b: { c: "delete me", d: "keep me" } } }; (0, _crud.deleteKey)("a.b.c", obj); expect(obj.a.b).toEqual({ d: "keep me" }); }); it("handles non-existent paths gracefully", function () { var obj = { existing: "value" }; (0, _crud.deleteKey)("nonexistent", obj); (0, _crud.deleteKey)("existing.nonexistent", obj); expect(obj).toEqual({ existing: "value" }); }); it("handles edge cases", function () { var obj = { test: "value" }; (0, _crud.deleteKey)("", obj); (0, _crud.deleteKey)(null, obj); (0, _crud.deleteKey)(undefined, obj); expect(obj).toEqual({ test: "value" }); }); it("preserves other nested properties", function () { var obj = { drawer: { action: "values", tab: "window", nested: { deep: "value", another: "prop" } } }; (0, _crud.deleteKey)("drawer.nested.deep", obj); expect(obj.drawer.nested).toEqual({ another: "prop" }); expect(obj.drawer.action).toBe("values"); expect(obj.drawer.tab).toBe("window"); }); });