MeshChatX/tests/frontend/settingsVisualiserPrefs.test.js

69 lines
2.6 KiB
JavaScript

import { describe, it, expect, beforeEach } from "vitest";
import {
loadVisualiserDisplayPrefs,
persistVisualiserLiveLayout,
persistVisualiserAutoReload,
persistVisualiserShowDisabled,
persistVisualiserShowDiscovered,
persistVisualiserRenderer,
persistVisualiserViewMode,
normalizeVisualiserRenderer,
normalizeVisualiserViewMode,
} from "@/js/settings/settingsVisualiserPrefs.js";
describe("settingsVisualiserPrefs", () => {
beforeEach(() => {
localStorage.clear();
});
it("defaults live layout on, auto-reload off, renderer auto, view flat", () => {
expect(loadVisualiserDisplayPrefs()).toEqual({
showDisabledInterfaces: false,
showDiscoveredInterfaces: false,
enablePhysics: true,
autoReload: false,
renderer: "auto",
viewMode: "flat",
});
});
it("persists live layout and auto-reload across loads", () => {
persistVisualiserLiveLayout(false);
persistVisualiserAutoReload(true);
persistVisualiserShowDisabled(true);
persistVisualiserShowDiscovered(true);
expect(loadVisualiserDisplayPrefs()).toEqual({
showDisabledInterfaces: true,
showDiscoveredInterfaces: true,
enablePhysics: false,
autoReload: true,
renderer: "auto",
viewMode: "flat",
});
persistVisualiserLiveLayout(true);
expect(loadVisualiserDisplayPrefs().enablePhysics).toBe(true);
});
it("can persist live layout without emitting rebuild events", () => {
persistVisualiserLiveLayout(false, { emit: false });
expect(loadVisualiserDisplayPrefs().enablePhysics).toBe(false);
persistVisualiserAutoReload(true, { emit: false });
expect(loadVisualiserDisplayPrefs().autoReload).toBe(true);
});
it("normalizes and persists renderer preference", () => {
expect(normalizeVisualiserRenderer("nope")).toBe("auto");
persistVisualiserRenderer("webgl");
expect(loadVisualiserDisplayPrefs().renderer).toBe("webgl");
persistVisualiserRenderer("vis", { emit: false });
expect(loadVisualiserDisplayPrefs().renderer).toBe("vis");
});
it("normalizes and persists planet view mode", () => {
expect(normalizeVisualiserViewMode("nope")).toBe("flat");
persistVisualiserViewMode("planet");
expect(loadVisualiserDisplayPrefs().viewMode).toBe("planet");
persistVisualiserViewMode("flat", { emit: false });
expect(loadVisualiserDisplayPrefs().viewMode).toBe("flat");
});
});