import { render, screen } from "@testing-library/react"; import { QueryClient, QueryClientProvider } from "@tanstack/react-query"; import { describe, expect, it, vi } from "vitest"; import { MemoryRouter } from "react-router"; import GitChanges from "#/routes/changes-tab"; import { useUnifiedGetGitChanges } from "#/hooks/query/use-unified-get-git-changes"; import { useAgentState } from "#/hooks/use-agent-state"; import { AgentState } from "#/types/agent-state"; vi.mock("react-i18next", () => ({ useTranslation: () => ({ t: (key: string) => key, }), })); vi.mock("#/hooks/query/use-unified-get-git-changes"); vi.mock("#/hooks/use-agent-state"); vi.mock("#/hooks/use-conversation-id", () => ({ useConversationId: () => ({ conversationId: "test-id" }), })); const wrapper = ({ children }: { children: React.ReactNode }) => ( {children} ); describe("Changes Tab", () => { it("should show EmptyChangesMessage when there are no changes", () => { vi.mocked(useUnifiedGetGitChanges).mockReturnValue({ data: [], isLoading: false, isFetching: false, isSuccess: true, isError: false, error: null, refetch: vi.fn(), }); vi.mocked(useAgentState).mockReturnValue({ curAgentState: AgentState.RUNNING, }); render(, { wrapper }); expect(screen.getByText("DIFF_VIEWER$NO_CHANGES")).toBeInTheDocument(); }); it("should not show EmptyChangesMessage when there are changes", () => { vi.mocked(useUnifiedGetGitChanges).mockReturnValue({ data: [{ path: "src/file.ts", status: "M" }], isLoading: false, isFetching: false, isSuccess: true, isError: false, error: null, refetch: vi.fn(), }); vi.mocked(useAgentState).mockReturnValue({ curAgentState: AgentState.RUNNING, }); render(, { wrapper }); expect( screen.queryByText("DIFF_VIEWER$NO_CHANGES"), ).not.toBeInTheDocument(); }); });