import { describe, expect, it, vi } from "vitest";
import { render, screen } from "@testing-library/react";
import { ProjectNodeSelector } from "../ProjectNodeSelector";
import type { NodeInfo } from "../../api";
const nodes: NodeInfo[] = [
{ id: "node-1", name: "Alpha", type: "remote", status: "online" },
{ id: "node-2", name: "Beta", type: "remote", status: "offline" },
{ id: "node-3", name: "Gamma", type: "local", status: "error" },
];
describe("ProjectNodeSelector", () => {
it("renders select with auto option", () => {
render();
expect(screen.getByRole("option", { name: "Auto (no assignment)" })).toBeInTheDocument();
});
it("renders node option labels with type and status", () => {
render();
expect(screen.getByRole("option", { name: "Alpha (remote) — online" })).toBeInTheDocument();
expect(screen.getByRole("option", { name: "Beta (remote) — offline" })).toBeInTheDocument();
});
it("dims offline and error options", () => {
render();
expect(screen.getByRole("option", { name: "Beta (remote) — offline" })).toHaveClass("project-node-selector__option--dim");
expect(screen.getByRole("option", { name: "Gamma (local) — error" })).toHaveClass("project-node-selector__option--dim");
});
it("does not dim online options", () => {
render();
expect(screen.getByRole("option", { name: "Alpha (remote) — online" })).not.toHaveClass("project-node-selector__option--dim");
});
});