refactor!: migrate away from bun

- migrate package management to pnpm
- migrate test suite to vitest
- also remove Anify integration
This commit is contained in:
2025-12-12 19:24:28 -05:00
parent 748aaec100
commit 1140ffa8b8
64 changed files with 1837 additions and 9212 deletions

View File

@@ -1,31 +1,81 @@
import { describe, expect, it } from "bun:test";
import app from "~/index";
import { server } from "~/mocks";
server.listen();
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" }),
});
expect(response.json()).resolves.toMatchSnapshot();
expect(await response.json()).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");
expect(response.json()).resolves.toMatchSnapshot();
expect(await response.json()).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");
expect(response.json()).resolves.toEqual({ success: false });
expect(await response.json()).toEqual({ success: false });
expect(response.status).toBe(404);
});
});