IKHSAN
EN Read in EnglishID

homeio

Publik

Fork dari doctor-io/homeio

Branch
main
Commit terakhir
958d74616 Oktober 2026

use-resolved-wallpaper.test.tsx

Buka raw
/* @vitest-environment jsdom */

import { renderHook, waitFor } from "@testing-library/react";
import { beforeEach, describe, expect, it, vi } from "vitest";
import { DEFAULT_APPEARANCE_SETTINGS } from "@/lib/desktop/appearance";
import { useResolvedWallpaper } from "@/modules/shell/hooks/useResolvedWallpaper";

describe("useResolvedWallpaper", () => {
  beforeEach(() => {
    vi.restoreAllMocks();
  });

  it("reads wallpaper from API", async () => {
    vi.spyOn(globalThis, "fetch").mockResolvedValueOnce(
      new Response(JSON.stringify({ data: { wallpaper: "/images/7.jpg" } }), { status: 200 }),
    );

    const { result } = renderHook(() => useResolvedWallpaper());

    await waitFor(() => {
      expect(result.current.isHydrated).toBe(true);
    });

    expect(result.current.wallpaper).toBe("/images/7.jpg");
  });

  it("falls back to default wallpaper when API fails", async () => {
    vi.spyOn(globalThis, "fetch").mockRejectedValueOnce(new Error("Network error"));

    const { result } = renderHook(() => useResolvedWallpaper());

    await waitFor(() => {
      expect(result.current.isHydrated).toBe(true);
    });

    expect(result.current.wallpaper).toBe(DEFAULT_APPEARANCE_SETTINGS.wallpaper);
  });

  it("falls back to default on invalid API response", async () => {
    vi.spyOn(globalThis, "fetch").mockResolvedValueOnce(
      new Response(JSON.stringify({ data: { wallpaper: "/invalid/path.jpg" } }), { status: 200 }),
    );

    const { result } = renderHook(() => useResolvedWallpaper());

    await waitFor(() => {
      expect(result.current.isHydrated).toBe(true);
    });

    expect(result.current.wallpaper).toBe(DEFAULT_APPEARANCE_SETTINGS.wallpaper);
  });
});
byte
1.710
baris
53
Jenis
tsx
Commit terakhir
16 Oktober 2026