Kyoo/api/tests/series/get-series.test.ts
2025-03-10 19:32:47 +01:00

46 lines
1.4 KiB
TypeScript

import { beforeAll, describe, expect, it } from "bun:test";
import { createSerie, getSerie } from "tests/helpers";
import { expectStatus } from "tests/utils";
import { db } from "~/db";
import { shows, videos } from "~/db/schema";
import { madeInAbyss, madeInAbyssVideo } from "~/models/examples";
beforeAll(async () => {
await db.delete(videos);
await db.delete(shows);
await db.insert(videos).values(madeInAbyssVideo);
await createSerie(madeInAbyss);
});
describe("Get series", () => {
it("Invalid slug", async () => {
const [resp, body] = await getSerie("sotneuhn", { langs: "en" });
expectStatus(resp, body).toBe(404);
expect(body).toMatchObject({
status: 404,
message: expect.any(String),
});
});
it("With a valid entryCount/availableCount", async () => {
const [resp, body] = await getSerie(madeInAbyss.slug, { langs: "en" });
expectStatus(resp, body).toBe(200);
expect(body.entriesCount).toBe(madeInAbyss.entries.length);
expect(body.availableCount).toBe(1);
});
it("With firstEntry", async () => {
const [resp, body] = await getSerie(madeInAbyss.slug, {
langs: "en",
with: ["firstEntry"],
});
expectStatus(resp, body).toBe(200);
expect(body.firstEntry.slug).toBe("made-in-abyss-s1e13");
expect(body.firstEntry.name).toBe(
madeInAbyss.entries[0].translations.en.name,
);
expect(body.firstEntry.videos).toBeArrayOfSize(1);
});
});