// RegionSwitcher: shared region hopper — options render, selections fire
// the callback, and it stays hidden until the fleet list loads.

import { afterEach, describe, expect, it, vi } from "vitest";
import { fireEvent, render, screen } from "@testing-library/react";
import { RegionSwitcher } from "@/components/regions/RegionSwitcher";

afterEach(() => {
  vi.clearAllMocks();
});

describe("RegionSwitcher", () => {
  it("renders nothing while the region list is empty", () => {
    const { container } = render(
      <RegionSwitcher regionKeys={[]} value="a" onSelect={vi.fn()} />,
    );
    expect(container.querySelector("select")).toBeNull();
  });

  it("renders the controlled value and fires onSelect on change", () => {
    const onSelect = vi.fn();
    render(<RegionSwitcher regionKeys={["aws-us-west-2", "gcp-asia-east1"]} value="gcp-asia-east1" onSelect={onSelect} />);
    const select = screen.getByRole("combobox", { name: "Switch region" }) as HTMLSelectElement;
    expect(select.value).toBe("gcp-asia-east1");
    expect(screen.getAllByRole("option").length).toBe(2);
    fireEvent.change(select, { target: { value: "aws-us-west-2" } });
    expect(onSelect).toHaveBeenCalledWith("aws-us-west-2");
  });
});
