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

File diff suppressed because it is too large Load Diff

View File

@@ -1,21 +1,74 @@
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 "/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(response.json()).resolves.toMatchSnapshot();
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(response.json()).resolves.toEqual({
expect(await response.json()).toEqual({
success: true,
results: [],
hasNextPage: false,