mirror of
				https://github.com/zoriya/Kyoo.git
				synced 2025-11-03 19:17:16 -05: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);
 | 
						|
	});
 | 
						|
});
 |