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(); }); });