Spracherkennung für: .ts vermutete Sprache: Unknown {[0] [0] [0]} [Methode: Schwerpunktbildung, einfache Gewichte, sechs Dimensionen]
import { beforeAll, beforeEach, describe, expect, it, vi } from "vitest";
import type { VideoGenerationProviderPlugin } from "../plugins/types.js";
const { resolvePluginCapabilityProvidersMock } = vi.hoisted(() => ({
resolvePluginCapabilityProvidersMock: vi.fn<() => VideoGenerationProviderPlugin[]>(() => []),
}));
vi.mock("../plugins/capability-provider-runtime.js", () => ({
resolvePluginCapabilityProviders: resolvePluginCapabilityProvidersMock,
}));
let getVideoGenerationProvider: typeof import("./provider-registry.js").getVideoGenerationProvider;
let listVideoGenerationProviders: typeof import("./provider-registry.js").listVideoGenerationProviders;
function createProvider(
params: Pick<VideoGenerationProviderPlugin, "id"> & Partial<VideoGenerationProviderPlugin>,
): VideoGenerationProviderPlugin {
return {
label: params.id,
capabilities: {},
generateVideo: async () => ({
videos: [{ buffer: Buffer.from("video"), mimeType: "video/mp4" }],
}),
...params,
};
}
describe("video-generation provider registry", () => {
beforeAll(async () => {
({ getVideoGenerationProvider, listVideoGenerationProviders } =
await import("./provider-registry.js"));
});
beforeEach(() => {
resolvePluginCapabilityProvidersMock.mockReset();
resolvePluginCapabilityProvidersMock.mockReturnValue([]);
});
it("delegates provider resolution to the capability provider boundary", () => {
expect(listVideoGenerationProviders()).toEqual([]);
expect(resolvePluginCapabilityProvidersMock).toHaveBeenCalledWith({
key: "videoGenerationProviders",
cfg: undefined,
});
});
it("uses active plugin providers without loading from disk", () => {
resolvePluginCapabilityProvidersMock.mockReturnValue([createProvider({ id: "custom-video" })]);
const provider = getVideoGenerationProvider("custom-video");
expect(provider?.id).toBe("custom-video");
expect(resolvePluginCapabilityProvidersMock).toHaveBeenCalledWith({
key: "videoGenerationProviders",
cfg: undefined,
});
});
it("ignores prototype-like provider ids and aliases", () => {
resolvePluginCapabilityProvidersMock.mockReturnValue([
createProvider({ id: "__proto__", aliases: ["constructor", "prototype"] }),
createProvider({ id: "safe-video", aliases: ["safe-alias", "constructor"] }),
]);
expect(listVideoGenerationProviders().map((provider) => provider.id)).toEqual(["safe-video"]);
expect(getVideoGenerationProvider("__proto__")).toBeUndefined();
expect(getVideoGenerationProvider("constructor")).toBeUndefined();
expect(getVideoGenerationProvider("safe-alias")?.id).toBe("safe-video");
});
});
¤ Dauer der Verarbeitung: 0.25 Sekunden
(vorverarbeitet am 2026-04-27)
¤
*© Formatika GbR, Deutschland