homeio
PublicForked from doctor-io/homeio
settings-backend.helpers.test.ts
import { describe, expect, it } from "vitest";
import { createSettingsCapabilities } from "@/modules/settings/hooks/backend/capabilities";
import {
formatBytes,
formatGigabytes,
formatUptime,
mapContainerToViewModel,
} from "@/modules/settings/hooks/backend/formatters";
describe("settings backend helpers", () => {
it("formats uptime and storage units for settings view models", () => {
expect(formatUptime(90_061)).toBe("1 day, 1 hour");
expect(formatGigabytes(5 * 1024 ** 3)).toBe("5.0 GB");
expect(formatBytes(512 * 1024 * 1024)).toBe("512.0 MB");
expect(formatBytes(null)).toBe("--");
});
it("maps docker stats into a stable settings container view model", () => {
expect(
mapContainerToViewModel({
id: "container1234567890",
name: "plex",
state: "running",
cpuPercent: 3.4,
memoryUsed: 512 * 1024 * 1024,
memoryLimit: 2 * 1024 * 1024 * 1024,
memoryPercent: 25,
networkRx: 1,
networkTx: 2,
blockRead: 3,
blockWrite: 4,
}),
).toEqual({
id: "container1234567890",
name: "plex",
image: "id:container123",
status: "running",
ports: "--",
cpu: "3.4%",
memory: "512.0 MB",
});
});
it("exposes explicit capability defaults for unsupported settings controls", () => {
const capabilities = createSettingsCapabilities();
expect(capabilities.general.hostname.disabled).toBe(false);
expect(capabilities.network.gateway.disabled).toBe(true);
expect(capabilities.docker.pruneImages.disabled).toBe(false);
expect(capabilities.saveBySection.security).toBe(true);
expect(capabilities.saveBySection.power).toBe(false);
});
});