feat(FN-3708): add tests for TodoModal lazy props

Adds test coverage for TodoModal's lazy-loaded prop handling, completing the second step of the FN-3708 test work.

Fusion-Task-Id: FN-3708
This commit is contained in:
Fusion
2026-05-07 12:27:09 -07:00
committed by gsxdsm
parent ae97fca340
commit ad5bed22f8
2 changed files with 34 additions and 16 deletions

View File

@@ -1,11 +1,11 @@
import "./TodoModal.css";
import { useEffect } from "react";
import { Suspense, lazy, useEffect } from "react";
import { ListChecks, X } from "lucide-react";
import { useOverlayDismiss } from "../hooks/useOverlayDismiss";
import { useMobileKeyboard } from "../hooks/useMobileKeyboard";
import { useMobileScrollLock } from "../hooks/useMobileScrollLock";
import { useViewportMode } from "./Header";
import { TodoView } from "./TodoView";
const TodoView = lazy(() => import("./TodoView").then((module) => ({ default: module.TodoView })));
interface TodoModalProps {
isOpen?: boolean;
@@ -61,13 +61,15 @@ export function TodoModal({ onClose, projectId, addToast, onPlanningMode }: Todo
</div>
<div className="todo-modal-body">
<TodoView
projectId={projectId}
addToast={addToast}
onPlanningMode={onPlanningMode}
onClose={onClose}
mobileKeyboardActive={isMobile && keyboardOpen}
/>
<Suspense fallback={null}>
<TodoView
projectId={projectId}
addToast={addToast}
onPlanningMode={onPlanningMode}
onClose={onClose}
mobileKeyboardActive={isMobile && keyboardOpen}
/>
</Suspense>
</div>
</div>
</div>

View File

@@ -1,5 +1,5 @@
import { describe, it, expect, vi, beforeEach } from "vitest";
import { fireEvent, render, screen } from "@testing-library/react";
import { fireEvent, render, screen, waitFor } from "@testing-library/react";
import { TodoModal } from "../TodoModal";
const mockTodoView = vi.fn();
@@ -64,13 +64,29 @@ describe("TodoModal", () => {
expect(onClose).toHaveBeenCalledTimes(1);
});
it("passes projectId and addToast through to TodoView", () => {
render(<TodoModal onClose={onClose} addToast={addToast} projectId="proj-1" />);
expect(screen.getByTestId("todo-view-content")).toBeInTheDocument();
expect(mockTodoView).toHaveBeenCalledWith(
expect.objectContaining({ projectId: "proj-1", addToast }),
it("passes expected props through the lazy-loaded TodoView", async () => {
const onPlanningMode = vi.fn();
render(
<TodoModal
onClose={onClose}
addToast={addToast}
projectId="proj-1"
onPlanningMode={onPlanningMode}
/>,
);
expect(await screen.findByTestId("todo-view-content")).toBeInTheDocument();
await waitFor(() => {
expect(mockTodoView).toHaveBeenCalledWith(
expect.objectContaining({
projectId: "proj-1",
addToast,
onPlanningMode,
onClose,
mobileKeyboardActive: false,
}),
);
});
});
describe("mobile keyboard behavior", () => {