diff --git a/frontend/__tests__/import-project.test.tsx b/frontend/__tests__/import-project.test.tsx new file mode 100644 index 000000000000..bf84101fbe27 --- /dev/null +++ b/frontend/__tests__/import-project.test.tsx @@ -0,0 +1,74 @@ +import { render, screen, fireEvent } from "@testing-library/react"; +import { Provider } from "react-redux"; +import store from "../src/store"; +import { describe, it, expect, vi } from "vitest"; +import { createMemoryRouter, RouterProvider } from "react-router-dom"; + +const mockNavigate = vi.fn(); + +// Mock the Remix components +vi.mock("@remix-run/react", async () => { + const actual = await vi.importActual("@remix-run/react"); + return { + ...actual, + useLoaderData: () => ({ + repositories: null, + githubAuthUrl: null, + }), + useRouteLoaderData: () => null, + useNavigate: () => mockNavigate, + Await: ({ children }) => children(null), + Form: ({ children, onSubmit }: any) => ( +
+ ), + }; +}); + +// Mock the SuggestionBox component +vi.mock("../src/components/github-repositories-suggestion-box", () => ({ + GitHubRepositoriesSuggestionBox: () => null, +})); + +// Mock the SuggestionBubble component +vi.mock("../src/components/suggestion-bubble", () => ({ + SuggestionBubble: () => null, +})); + +// Mock the ChatInput component +vi.mock("../src/components/chat-input", () => ({ + ChatInput: () => null, +})); + +describe("Import Project", () => { + it("should not navigate immediately after selecting a zip file", async () => { + // Import the component after mocking + const { default: Home } = await import("../src/routes/_oh._index/route"); + + const router = createMemoryRouter([ + { + path: "/", + element: ( +