import { fireEvent, render, screen } from "@testing-library/react"; import { describe, expect, it, vi } from "vitest"; import { UpliftRequestForm } from "@/app/v/[token]/dispatch/_components/uplift-request-form"; function renderForm(overrides: Partial> = {}) { return render( , ); } describe("UpliftRequestForm revise mode", () => { it("shows reason and evidence fields regardless of amount", () => { renderForm({ initialRequested: "900" }); expect(screen.getByLabelText(/reason/i)).toBeInTheDocument(); expect(screen.getByLabelText(/evidence/i)).toBeInTheDocument(); }); it("blocks submit and does not call onSubmit when revised NTE is at or below current NTE", () => { const onSubmit = vi.fn(); renderForm({ initialRequested: "1000", onSubmit }); fireEvent.click(screen.getByRole("button", { name: /submit revision/i })); expect(onSubmit).not.toHaveBeenCalled(); expect(screen.getByText(/must be greater than the current NTE/i)).toBeInTheDocument(); }); it("reports the current NTE threshold in the actionable error", () => { renderForm({ initialRequested: "900", currentNte: 1000 }); fireEvent.click(screen.getByRole("button", { name: /submit revision/i })); expect(screen.getByText(/\$1000\.00/)).toBeInTheDocument(); }); });