Files
glances/tests/js/levels.test.mjs

50 lines
2.1 KiB
JavaScript

import { test } from "node:test";
import assert from "node:assert/strict";
import { levelClass, scalarLevel, itemLevel } from "../../glances/outputs/static/js/v5/levels.js";
const SCALAR = { percent: 52.5, _levels: { percent: { level: "careful", prominent: true } } };
const COLLECTION = {
data: [{ interface_name: "eth0", errors_in: 0 }],
_levels: { eth0: { errors_in: { level: "ok", prominent: false } } },
};
test("each tier maps to its class", () => {
for (const tier of ["ok", "careful", "warning", "critical"]) {
assert.equal(levelClass({ level: tier }), `gl-level-${tier}`);
}
});
test("prominent adds a background class, not a different colour", () => {
assert.equal(levelClass({ level: "critical", prominent: true }), "gl-level-critical gl-prominent");
});
test("an unknown or missing tier yields no class", () => {
assert.equal(levelClass(null), "");
assert.equal(levelClass(undefined), "");
assert.equal(levelClass({ level: "bogus" }), "");
assert.equal(levelClass({}), "");
});
test("scalarLevel reads _levels[field]", () => {
assert.deepEqual(scalarLevel(SCALAR, "percent"), { level: "careful", prominent: true });
assert.equal(scalarLevel(SCALAR, "total"), null);
assert.equal(scalarLevel({}, "percent"), null);
});
test("itemLevel reads _levels[primaryKeyValue][field]", () => {
assert.deepEqual(itemLevel(COLLECTION, "eth0", "errors_in"), { level: "ok", prominent: false });
assert.equal(itemLevel(COLLECTION, "eth0", "bytes_recv"), null);
assert.equal(itemLevel(COLLECTION, "lo", "errors_in"), null);
});
test("levels.js exports exactly its intended surface", async () => {
// The TUI signals an alert on the VALUE only
// (glances/outputs/curses_renderer_v5.py:126-129). The rule is enforced by
// there being no API to break it -- so the export surface is asserted, not
// asserted-about. A previous version of this test checked globalThis,
// which ES module exports never populate: it passed even with a real
// `export function headerClass` present.
const mod = await import("../../glances/outputs/static/js/v5/levels.js");
assert.deepEqual(Object.keys(mod).sort(), ["itemLevel", "levelClass", "scalarLevel"]);
});