import { render, screen, waitFor } from "@testing-library/react"; import { describe, it, expect, vi } from "vitest"; import { QueryClient, QueryClientProvider } from "@tanstack/react-query"; import { createRoutesStub } from "react-router"; import { RecentConversations } from "#/components/features/home/recent-conversations/recent-conversations"; import V1ConversationService from "#/api/conversation-service/v1-conversation-service.api"; const renderRecentConversations = () => { const RouterStub = createRoutesStub([ { Component: () => , path: "/", }, ]); const queryClient = new QueryClient({ defaultOptions: { queries: { retry: false, }, }, }); return render(, { wrapper: ({ children }) => ( {children} ), }); }; describe("RecentConversations", () => { const searchConversationsSpy = vi.spyOn( V1ConversationService, "searchConversations", ); it("should not show empty state when there is an error", async () => { searchConversationsSpy.mockRejectedValue( new Error("Failed to fetch conversations"), ); renderRecentConversations(); // Wait for the error to be displayed await waitFor(() => { expect( screen.getByText("Failed to fetch conversations"), ).toBeInTheDocument(); }); // The empty state should NOT be displayed when there's an error expect( screen.queryByText("HOME$NO_RECENT_CONVERSATIONS"), ).not.toBeInTheDocument(); }); });