import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; describe('requests the "/search" route', () => { let app: typeof import("~/index").app; let fetchFromMultipleSources: typeof import("~/libs/fetchFromMultipleSources").fetchFromMultipleSources; beforeEach(async () => { vi.resetModules(); // Mock useMockData vi.doMock("~/libs/useMockData", () => ({ useMockData: () => false, })); // Mock fetchFromMultipleSources vi.doMock("~/libs/fetchFromMultipleSources", () => ({ fetchFromMultipleSources: vi.fn(), })); const indexModule = await import("~/index"); app = indexModule.app; const fetchModule = await import("~/libs/fetchFromMultipleSources"); fetchFromMultipleSources = fetchModule.fetchFromMultipleSources; }); afterEach(() => { vi.doUnmock("~/libs/fetchFromMultipleSources"); vi.doUnmock("~/libs/useMockData"); vi.restoreAllMocks(); }); it("valid query that returns anilist results", async () => { vi.mocked(fetchFromMultipleSources).mockResolvedValue({ result: { results: [ { id: 151807, title: { userPreferred: "Ore dake Level Up na Ken", english: "Solo Leveling", }, coverImage: { extraLarge: "https://s4.anilist.co/file/anilistcdn/media/anime/cover/large/bx151807-yxY3olrjZH4k.png", large: "https://s4.anilist.co/file/anilistcdn/media/anime/cover/medium/bx151807-yxY3olrjZH4k.png", medium: "https://s4.anilist.co/file/anilistcdn/media/anime/cover/small/bx151807-yxY3olrjZH4k.png", }, }, ], hasNextPage: false, }, errorOccurred: false, }); const response = await app.request("/search?query=search query"); expect(await response.json()).toMatchSnapshot(); }); it("query that returns no results", async () => { vi.mocked(fetchFromMultipleSources).mockResolvedValue({ result: null, errorOccurred: false, }); const response = await app.request("/search?query=a"); expect(await response.json()).toEqual({ success: true, results: [], hasNextPage: false, }); expect(response.status).toBe(200); }); });