mirror of
https://github.com/movie-web/movie-web.git
synced 2024-11-11 03:55:09 +01:00
52 lines
1.8 KiB
TypeScript
52 lines
1.8 KiB
TypeScript
import { describe, it } from "vitest";
|
|
import "@/backend";
|
|
import { getProviders } from "@/backend/helpers/register";
|
|
import { MWMediaType } from "@/backend/metadata/types";
|
|
import { runProvider } from "@/backend/helpers/run";
|
|
import { testData } from "@/__tests__/providers/testdata";
|
|
|
|
describe("providers", () => {
|
|
const providers = getProviders();
|
|
|
|
it("have at least one provider", ({ expect }) => {
|
|
expect(providers.length).toBeGreaterThan(0);
|
|
});
|
|
|
|
for (const provider of providers) {
|
|
describe(provider.displayName, () => {
|
|
it("must have at least one type", async ({ expect }) => {
|
|
expect(provider.type.length).toBeGreaterThan(0);
|
|
});
|
|
|
|
if (provider.type.includes(MWMediaType.MOVIE)) {
|
|
it("must work with movies", async ({ expect }) => {
|
|
const movie = testData.find((v) => v.meta.type === MWMediaType.MOVIE);
|
|
if (!movie) throw new Error("no movie to test with");
|
|
const results = await runProvider(provider, {
|
|
media: movie,
|
|
progress() {},
|
|
type: movie.meta.type as any,
|
|
});
|
|
expect(results).toBeTruthy();
|
|
});
|
|
}
|
|
|
|
if (provider.type.includes(MWMediaType.SERIES)) {
|
|
it("must work with series", async ({ expect }) => {
|
|
const show = testData.find((v) => v.meta.type === MWMediaType.SERIES);
|
|
if (show?.meta.type !== MWMediaType.SERIES)
|
|
throw new Error("no show to test with");
|
|
const results = await runProvider(provider, {
|
|
media: show,
|
|
progress() {},
|
|
type: show.meta.type as MWMediaType.SERIES,
|
|
episode: show.meta.seasonData.episodes[0].id,
|
|
season: show.meta.seasons[0].id,
|
|
});
|
|
expect(results).toBeTruthy();
|
|
});
|
|
}
|
|
});
|
|
}
|
|
});
|