| import { screen } from "@testing-library/react"; | |
| import { describe, expect, it, vi } from "vitest"; | |
| import { renderWithProviders } from "test-utils"; | |
| import { GitHubRepositorySelector } from "#/components/features/github/github-repo-selector"; | |
| import OpenHands from "#/api/open-hands"; | |
| describe("GitHubRepositorySelector", () => { | |
| const onInputChangeMock = vi.fn(); | |
| const onSelectMock = vi.fn(); | |
| it("should render the search input", () => { | |
| renderWithProviders( | |
| <GitHubRepositorySelector | |
| onInputChange={onInputChangeMock} | |
| onSelect={onSelectMock} | |
| publicRepositories={[]} | |
| userRepositories={[]} | |
| />, | |
| ); | |
| expect( | |
| screen.getByPlaceholderText("LANDING$SELECT_REPO"), | |
| ).toBeInTheDocument(); | |
| }); | |
| it("should show the GitHub login button in OSS mode", () => { | |
| const getConfigSpy = vi.spyOn(OpenHands, "getConfig"); | |
| getConfigSpy.mockResolvedValue({ | |
| APP_MODE: "oss", | |
| APP_SLUG: "openhands", | |
| GITHUB_CLIENT_ID: "test-client-id", | |
| POSTHOG_CLIENT_KEY: "test-posthog-key", | |
| }); | |
| renderWithProviders( | |
| <GitHubRepositorySelector | |
| onInputChange={onInputChangeMock} | |
| onSelect={onSelectMock} | |
| publicRepositories={[]} | |
| userRepositories={[]} | |
| />, | |
| ); | |
| expect(screen.getByTestId("github-repo-selector")).toBeInTheDocument(); | |
| }); | |
| it("should show the search results", () => { | |
| const mockSearchedRepos = [ | |
| { | |
| id: 1, | |
| full_name: "test/repo1", | |
| stargazers_count: 100, | |
| }, | |
| { | |
| id: 2, | |
| full_name: "test/repo2", | |
| stargazers_count: 200, | |
| }, | |
| ]; | |
| const searchPublicRepositoriesSpy = vi.spyOn( | |
| OpenHands, | |
| "searchGitHubRepositories", | |
| ); | |
| searchPublicRepositoriesSpy.mockResolvedValue(mockSearchedRepos); | |
| renderWithProviders( | |
| <GitHubRepositorySelector | |
| onInputChange={onInputChangeMock} | |
| onSelect={onSelectMock} | |
| publicRepositories={[]} | |
| userRepositories={[]} | |
| />, | |
| ); | |
| expect(screen.getByTestId("github-repo-selector")).toBeInTheDocument(); | |
| }); | |
| }); | |