mirror of
https://github.com/zoriya/Kyoo.git
synced 2025-05-24 02:02:36 -04:00
91 lines
2.7 KiB
TypeScript
91 lines
2.7 KiB
TypeScript
import { beforeAll, describe, expect, it } from "bun:test";
|
|
import {
|
|
createSerie,
|
|
createVideo,
|
|
getEntries,
|
|
getExtras,
|
|
getNews,
|
|
} from "tests/helpers";
|
|
import { expectStatus } from "tests/utils";
|
|
import { db } from "~/db";
|
|
import { shows, videos } from "~/db/schema";
|
|
import { madeInAbyss as base, madeInAbyssVideo } from "~/models/examples";
|
|
|
|
// make a copy so we can mutate it.
|
|
const madeInAbyss = JSON.parse(JSON.stringify(base)) as typeof base;
|
|
|
|
beforeAll(async () => {
|
|
await db.delete(shows);
|
|
await db.delete(videos);
|
|
const [_, vid] = await createVideo(madeInAbyssVideo);
|
|
for (const entry of madeInAbyss.entries.filter((x) => x.videos?.length))
|
|
entry.videos = [vid[0].id];
|
|
for (const entry of madeInAbyss.extras.filter((x) => x.video))
|
|
entry.video = vid[0].id;
|
|
await createSerie(madeInAbyss);
|
|
});
|
|
|
|
describe("Get entries", () => {
|
|
it("Invalid slug", async () => {
|
|
const [resp, body] = await getEntries("sotneuhn", { langs: "en" });
|
|
|
|
expectStatus(resp, body).toBe(404);
|
|
expect(body).toMatchObject({
|
|
status: 404,
|
|
message: expect.any(String),
|
|
});
|
|
});
|
|
it("Default sort order", async () => {
|
|
const [resp, body] = await getEntries(madeInAbyss.slug, { langs: "en" });
|
|
|
|
expectStatus(resp, body).toBe(200);
|
|
expect(body.items).toBeArrayOfSize(madeInAbyss.entries.length);
|
|
});
|
|
it("With videos", async () => {
|
|
const [resp, body] = await getEntries(madeInAbyss.slug, { langs: "en" });
|
|
|
|
expectStatus(resp, body).toBe(200);
|
|
expect(body.items[0].videos).toBeArrayOfSize(1);
|
|
expect(body.items[0].videos[0]).toMatchObject({
|
|
path: madeInAbyssVideo.path,
|
|
slug: `${madeInAbyss.slug}-s1e13`,
|
|
version: madeInAbyssVideo.version,
|
|
rendering: madeInAbyssVideo.rendering,
|
|
part: madeInAbyssVideo.part,
|
|
});
|
|
});
|
|
it("Get new videos", async () => {
|
|
const [resp, body] = await getNews({ langs: "en" });
|
|
|
|
expectStatus(resp, body).toBe(200);
|
|
expect(body.items).toBeArrayOfSize(1);
|
|
expect(body.items[0].slug).toBe("made-in-abyss-s1e13");
|
|
expect(body.items[0].videos).toBeArrayOfSize(1);
|
|
expect(body.items[0].videos[0]).toMatchObject({
|
|
path: madeInAbyssVideo.path,
|
|
slug: `${madeInAbyss.slug}-s1e13`,
|
|
version: madeInAbyssVideo.version,
|
|
rendering: madeInAbyssVideo.rendering,
|
|
part: madeInAbyssVideo.part,
|
|
});
|
|
});
|
|
});
|
|
|
|
describe("Get extra", () => {
|
|
it("Invalid slug", async () => {
|
|
const [resp, body] = await getExtras("sotneuhn", {});
|
|
|
|
expectStatus(resp, body).toBe(404);
|
|
expect(body).toMatchObject({
|
|
status: 404,
|
|
message: expect.any(String),
|
|
});
|
|
});
|
|
it("Default sort order", async () => {
|
|
const [resp, body] = await getExtras(madeInAbyss.slug, {});
|
|
|
|
expectStatus(resp, body).toBe(200);
|
|
expect(body.items).toBeArrayOfSize(madeInAbyss.extras.length);
|
|
});
|
|
});
|