import { render, screen, fireEvent, cleanup } from "@testing-library/react";
import { it, expect, beforeEach } from "vitest";
import { ThemeToggle, getStoredTheme } from "./ThemeToggle";
beforeEach(() => {
try {
localStorage.clear();
} catch {}
document.documentElement.removeAttribute("data-seed-color-mode");
});
it("defaults to system, and picks the persisted choice back up on remount", () => {
expect(getStoredTheme()).toBe("system");
render();
expect(screen.getByText("Систем")).toBeInTheDocument();
expect(screen.getByText("Гэрэл")).toBeInTheDocument();
expect(screen.getByText("Харанхуй")).toBeInTheDocument();
cleanup();
localStorage.setItem("mercury.theme", "dark");
render();
const darkInput = screen.getByText("Харанхуй").closest("label")!.querySelector("input")!;
expect(darkInput).toBeChecked();
});
it("selecting dark persists the choice and flips the live data-seed-color-mode attribute", () => {
render();
const darkInput = screen.getByText("Харанхуй").closest("label")!.querySelector("input")!;
fireEvent.click(darkInput);
expect(getStoredTheme()).toBe("dark");
expect(document.documentElement.getAttribute("data-seed-color-mode")).toBe("dark-only");
});
it("selecting light and back to system round-trips through localStorage + the html attribute", () => {
render();
const lightInput = screen.getByText("Гэрэл").closest("label")!.querySelector("input")!;
fireEvent.click(lightInput);
expect(getStoredTheme()).toBe("light");
expect(document.documentElement.getAttribute("data-seed-color-mode")).toBe("light-only");
const systemInput = screen.getByText("Систем").closest("label")!.querySelector("input")!;
fireEvent.click(systemInput);
expect(getStoredTheme()).toBe("system");
expect(document.documentElement.getAttribute("data-seed-color-mode")).toBe("system");
});