- migrate package management to pnpm - migrate test suite to vitest - also remove Anify integration
79 lines
2.3 KiB
TypeScript
79 lines
2.3 KiB
TypeScript
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);
|
|
});
|
|
});
|