82 lines
2.3 KiB
TypeScript
82 lines
2.3 KiB
TypeScript
import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
|
|
|
|
describe('requests the "/title" route', () => {
|
|
let app: typeof import("~/index").app;
|
|
let fetchFromMultipleSources: typeof import("~/libs/fetchFromMultipleSources").fetchFromMultipleSources;
|
|
|
|
beforeEach(async () => {
|
|
vi.resetModules();
|
|
|
|
vi.doMock("~/libs/useMockData", () => ({
|
|
useMockData: () => false,
|
|
}));
|
|
|
|
vi.doMock("~/libs/fetchFromMultipleSources", () => ({
|
|
fetchFromMultipleSources: vi.fn(),
|
|
}));
|
|
|
|
app = (await import("~/index")).app;
|
|
fetchFromMultipleSources = (await import("~/libs/fetchFromMultipleSources"))
|
|
.fetchFromMultipleSources;
|
|
});
|
|
|
|
afterEach(() => {
|
|
vi.doUnmock("~/libs/fetchFromMultipleSources");
|
|
vi.doUnmock("~/libs/useMockData");
|
|
vi.restoreAllMocks();
|
|
});
|
|
|
|
const mockTitleFn = (id: number) => ({
|
|
id,
|
|
title: {
|
|
userPreferred: "Test Title",
|
|
english: "Test Title English",
|
|
},
|
|
description: "Test Description",
|
|
coverImage: {
|
|
extraLarge: "https://example.com/cover.png",
|
|
large: "https://example.com/cover.png",
|
|
medium: "https://example.com/cover.png",
|
|
},
|
|
bannerImage: "https://example.com/banner.png",
|
|
});
|
|
|
|
it("with a valid id & token", async () => {
|
|
vi.mocked(fetchFromMultipleSources).mockResolvedValue({
|
|
result: mockTitleFn(10) as any,
|
|
errorOccurred: false,
|
|
});
|
|
|
|
const response = await app.request("/title?id=10", {
|
|
headers: new Headers({ "x-anilist-token": "asd" }),
|
|
});
|
|
|
|
await expect(response.json()).resolves.toMatchSnapshot();
|
|
expect(response.status).toBe(200);
|
|
});
|
|
|
|
it("with a valid id but no token", async () => {
|
|
vi.mocked(fetchFromMultipleSources).mockResolvedValue({
|
|
result: mockTitleFn(10) as any,
|
|
errorOccurred: false,
|
|
});
|
|
|
|
const response = await app.request("/title?id=10");
|
|
|
|
await expect(response.json()).resolves.toMatchSnapshot();
|
|
expect(response.status).toBe(200);
|
|
});
|
|
|
|
it("with an unknown title from all sources", async () => {
|
|
vi.mocked(fetchFromMultipleSources).mockResolvedValue({
|
|
result: null,
|
|
errorOccurred: false,
|
|
});
|
|
|
|
const response = await app.request("/title?id=-1");
|
|
|
|
await expect(response.json()).resolves.toEqual({ success: false });
|
|
expect(response.status).toBe(404);
|
|
});
|
|
});
|