IKHSAN
ENID Baca dalam Bahasa Indonesia

homeio

Public

Forked from doctor-io/homeio

Branch
main
Latest commit
958d74616 October 2026

settings-backend.helpers.test.ts

Open raw
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);
  });
});
bytes
1,732
lines
54
Type
ts
Latest commit
16 October 2026