mirror of
https://github.com/zoriya/Kyoo.git
synced 2025-05-24 02:02:36 -04:00
Add more tests
This commit is contained in:
parent
ce66dba0c8
commit
d2bb37b3a7
@ -1,24 +1,58 @@
|
||||
import { beforeAll, describe, expect, it } from "bun:test";
|
||||
import { eq } from "drizzle-orm";
|
||||
import { createVideo } from "tests/helpers";
|
||||
import { createMovie, createSerie, createVideo } from "tests/helpers";
|
||||
import { expectStatus } from "tests/utils";
|
||||
import { db } from "~/db";
|
||||
import { entries, shows, videos } from "~/db/schema";
|
||||
import { bubble, madeInAbyss } from "~/models/examples";
|
||||
|
||||
beforeAll(async () => {
|
||||
await db.delete(shows);
|
||||
await db.delete(entries);
|
||||
await db.delete(videos);
|
||||
let [ret, body] = await createSerie(madeInAbyss);
|
||||
expectStatus(ret, body).toBe(201);
|
||||
[ret, body] = await createMovie(bubble);
|
||||
expectStatus(ret, body).toBe(201);
|
||||
});
|
||||
|
||||
describe("Video seeding", () => {
|
||||
it("Can create a video without entry", async () => {
|
||||
const [resp, body] = await createVideo({
|
||||
guess: { title: "mia", from: "test" },
|
||||
guess: { title: "unknown", from: "test" },
|
||||
part: null,
|
||||
path: "/video/unknown s1e13.mkv",
|
||||
rendering: "sha",
|
||||
version: 1,
|
||||
});
|
||||
|
||||
expectStatus(resp, body).toBe(201);
|
||||
expect(body).toBeArrayOfSize(1);
|
||||
expect(body[0].id).toBeString();
|
||||
|
||||
const vid = await db.query.videos.findFirst({
|
||||
where: eq(videos.id, body[0].id),
|
||||
with: {
|
||||
evj: { with: { entry: true } },
|
||||
},
|
||||
});
|
||||
|
||||
expect(vid).not.toBeNil();
|
||||
expect(vid!.path).toBe("/video/unknown s1e13.mkv");
|
||||
expect(vid!.guess).toBe({ title: "unknown", from: "test" });
|
||||
|
||||
expect(body[0].entries).toBeArrayOfSize(0);
|
||||
expect(vid!.evj).toBeArrayOfSize(0);
|
||||
});
|
||||
|
||||
it("With slug", async () => {
|
||||
const [resp, body] = await createVideo({
|
||||
guess: { title: "mia", season: [1], episode: [13], from: "test" },
|
||||
part: null,
|
||||
path: "/video/mia s1e13.mkv",
|
||||
rendering: "sha",
|
||||
version: 1,
|
||||
for: [{ slug: `${madeInAbyss.slug}-s1e13` }],
|
||||
});
|
||||
|
||||
expectStatus(resp, body).toBe(201);
|
||||
@ -36,15 +70,48 @@ describe("Video seeding", () => {
|
||||
expect(vid!.path).toBe("/video/mia s1e13.mkv");
|
||||
expect(vid!.guess).toBe({ title: "mia", from: "test" });
|
||||
|
||||
expect(body[0].slug).toBe("mia");
|
||||
// videos created without entries should create an /unknown entry.
|
||||
expect(body[0].entries).toBeArrayOfSize(1);
|
||||
expect(vid!.evj).toBeArrayOfSize(1);
|
||||
expect(vid!.evj[0].slug).toBe("mia");
|
||||
expect(vid!.evj[0].entry).toMatchObject({
|
||||
kind: "unknown",
|
||||
name: "mia",
|
||||
// should we store the video path in the unknown entry?
|
||||
// in db it would be the `description` field
|
||||
|
||||
expect(vid!.evj[0].slug).toBe(`${madeInAbyss.slug}-s1e13`);
|
||||
expect(vid!.evj[0].entry.slug).toBe(`${madeInAbyss.slug}-s1e13`);
|
||||
});
|
||||
|
||||
it("With season/episode", async () => {
|
||||
const [resp, body] = await createVideo({
|
||||
guess: { title: "mia", season: [1], episode: [13], from: "test" },
|
||||
part: null,
|
||||
path: "/video/mia s1e13.mkv",
|
||||
rendering: "renderingsha",
|
||||
version: 1,
|
||||
for: [
|
||||
{
|
||||
serie: madeInAbyss.slug,
|
||||
season: madeInAbyss.entries[0].seasonNumber!,
|
||||
episode: madeInAbyss.entries[0].episodeNumber!,
|
||||
},
|
||||
],
|
||||
});
|
||||
|
||||
expectStatus(resp, body).toBe(201);
|
||||
expect(body).toBeArrayOfSize(1);
|
||||
expect(body[0].id).toBeString();
|
||||
|
||||
const vid = await db.query.videos.findFirst({
|
||||
where: eq(videos.id, body[0].id),
|
||||
with: {
|
||||
evj: { with: { entry: true } },
|
||||
},
|
||||
});
|
||||
|
||||
expect(vid).not.toBeNil();
|
||||
expect(vid!.path).toBe("/video/mia s1e13.mkv");
|
||||
expect(vid!.guess).toBe({ title: "mia", from: "test" });
|
||||
|
||||
expect(body[0].entries).toBeArrayOfSize(1);
|
||||
expect(vid!.evj).toBeArrayOfSize(1);
|
||||
|
||||
expect(vid!.evj[0].slug).toBe(`${madeInAbyss.slug}-s1e13-renderingsha`);
|
||||
expect(vid!.evj[0].entry.slug).toBe(`${madeInAbyss.slug}-s1e13`);
|
||||
});
|
||||
});
|
||||
|
Loading…
x
Reference in New Issue
Block a user