// @vitest-environment jsdom import { act, forwardRef, useImperativeHandle, useRef, type ReactNode } from "react"; import { createRoot } from "react-dom/client"; import { QueryClient, QueryClientProvider } from "@tanstack/react-query"; import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; import { queryKeys } from "../lib/queryKeys"; const mockSession = vi.hoisted(() => ({ userId: "user-1", pending: null as Promise<{ user: { id: string } } | null> | null })); vi.mock("../api/auth", () => ({ authApi: { getSession: () => mockSession.pending ?? Promise.resolve({ user: { id: mockSession.userId } }) }, })); vi.mock("./MarkdownEditor", () => ({ MarkdownEditor: forwardRef< { focus: () => void }, { value: string; onChange: (value: string) => void } >(function MarkdownEditorMock(props, ref) { const taRef = useRef(null); useImperativeHandle(ref, () => ({ focus: () => taRef.current?.focus(), })); return (