mirror of
https://github.com/Sea-Haven-Industries/shoc-frontend-new.git
synced 2026-10-03 06:53:24 +00:00
48 lines
1.6 KiB
TypeScript
48 lines
1.6 KiB
TypeScript
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<React.ComponentProps<typeof UpliftRequestForm>> = {}) {
|
|
return render(
|
|
<UpliftRequestForm
|
|
mode="revise"
|
|
currentNte={1000}
|
|
initialRequested="1000"
|
|
initialReason=""
|
|
hasExistingEvidence={false}
|
|
submitting={false}
|
|
uploadingPercent={undefined}
|
|
errorMessage=""
|
|
onSubmit={vi.fn()}
|
|
onCancel={vi.fn()}
|
|
{...overrides}
|
|
/>,
|
|
);
|
|
}
|
|
|
|
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();
|
|
});
|
|
});
|