memos/web/tests/home-loading-boundary.test.tsx

61 lines
1.7 KiB
TypeScript

import { render, screen } from "@testing-library/react";
import { describe, expect, it, vi } from "vitest";
import Home from "@/pages/Home";
vi.mock("@/components/MemoEditor", () => ({
default: () => <div data-testid="memo-editor" />,
}));
vi.mock("@/components/MemoView", () => ({
default: () => <div data-testid="memo-view" />,
}));
vi.mock("@/components/PagedMemoList", () => ({
default: ({
renderer,
renderLeading,
}: {
renderer: (memo: { name: string }, options: { compact: boolean }) => React.ReactNode;
renderLeading: (options: { useGrid: boolean }) => React.ReactNode;
}) => (
<>
{renderLeading({ useGrid: false })}
{renderer({ name: "memos/1" }, { compact: false })}
</>
),
getMemoKey: (memo: { name: string }) => memo.name,
}));
vi.mock("@/contexts/AuthContext", () => ({
useAuth: () => ({ isUserSettingsInitialized: true }),
}));
vi.mock("@/contexts/MemoFilterContext", () => ({
useMemoFilterContext: () => ({ filters: [] }),
}));
vi.mock("@/contexts/NewMemoContext", () => ({
NewMemoProvider: ({ children }: { children: React.ReactNode }) => <>{children}</>,
}));
vi.mock("@/hooks", () => ({
useMemoFilters: () => "",
useMemoSorting: () => ({ listSort: undefined, orderBy: "create_time desc" }),
}));
vi.mock("@/hooks/useCurrentUser", () => ({
default: () => ({ name: "users/1" }),
}));
vi.mock("@/utils/i18n", () => ({
useTranslate: () => (key: string) => key,
}));
describe("<Home>", () => {
it("renders the editor and memo cards synchronously without blank placeholders", () => {
render(<Home />);
expect(screen.getByTestId("memo-editor")).toBeInTheDocument();
expect(screen.getByTestId("memo-view")).toBeInTheDocument();
});
});