import { describe, it, expect, vi } from "vitest";
import { fireEvent, render, screen } from "@testing-library/react";
import { AgentPermissionPolicyEditor } from "../AgentPermissionPolicyEditor";
import type { AgentPermissionPolicy } from "@fusion/core";
describe("AgentPermissionPolicyEditor", () => {
it("preset dropdown switches all rules", () => {
const onChange = vi.fn();
render(
,
);
fireEvent.change(screen.getByLabelText("Preset"), { target: { value: "locked-down" } });
const payload = onChange.mock.calls.at(-1)?.[0] as AgentPermissionPolicy;
expect(payload.presetId).toBe("locked-down");
expect(payload.rules.git_write).toBe("block");
});
it("changing one category flips to custom", () => {
const onChange = vi.fn();
render(
,
);
const selects = screen.getAllByRole("combobox");
fireEvent.change(selects[1], { target: { value: "require-approval" } });
const payload = onChange.mock.calls.at(-1)?.[0] as AgentPermissionPolicy;
expect(payload.presetId).toBe("custom");
});
it("agent override inherit preset emits undefined", () => {
const onChange = vi.fn();
render(
,
);
fireEvent.change(screen.getByLabelText("Preset"), { target: { value: "inherit" } });
expect(onChange).toHaveBeenLastCalledWith(undefined);
});
it("shows inherit annotation from project default", () => {
render(
{}}
/>,
);
expect(screen.getByText("from project default: Require approval")).toBeInTheDocument();
});
});