import { describe, it, expect, vi, beforeEach } from "vitest";
import { render, screen } from "@testing-library/react";
import ProfileModal from "../components/ProfileModal";

// Mock du store Zustand — on expose des données neutres et des fonctions no-op
vi.mock("../store", () => ({
  useStore: vi.fn((selector?: (s: unknown) => unknown) => {
    const state = {
      profiles: [],
      activeProfileId: null,
      setActiveProfile: vi.fn(),
      createProfile: vi.fn(),
      deleteProfile: vi.fn(),
    };
    // Zustand permet d'appeler useStore avec ou sans sélecteur
    return typeof selector === "function" ? selector(state) : state;
  }),
}));

const noop = () => {};

describe("ProfileModal", () => {
  beforeEach(() => {
    vi.clearAllMocks();
  });

  describe("mode normal (blocking absent)", () => {
    it("affiche le bouton de fermeture ✕", () => {
      render(<ProfileModal onClose={noop} />);
      expect(screen.getByRole("button", { name: "✕" })).toBeInTheDocument();
    });

    it('affiche le titre "Profils"', () => {
      render(<ProfileModal onClose={noop} />);
      expect(screen.getByRole("heading", { name: "Profils" })).toBeInTheDocument();
    });
  });

  describe("mode blocking", () => {
    it("ne rend pas le bouton de fermeture ✕", () => {
      render(<ProfileModal onClose={noop} blocking />);
      expect(screen.queryByRole("button", { name: "✕" })).not.toBeInTheDocument();
    });

    it('affiche le titre "Bienvenue — créez votre profil"', () => {
      render(<ProfileModal onClose={noop} blocking />);
      expect(
        screen.getByRole("heading", { name: "Bienvenue — créez votre profil" })
      ).toBeInTheDocument();
    });
  });
});
