mirror of
https://github.com/nicolargo/glances.git
synced 2026-09-15 23:02:52 -04:00
50 lines
2.1 KiB
JavaScript
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"]);
|
|
});
|