diff --git a/tests/unit/new-content-providers.test.ts b/tests/unit/new-content-providers.test.ts new file mode 100644 index 0000000000..f4adca3f29 --- /dev/null +++ b/tests/unit/new-content-providers.test.ts @@ -0,0 +1,109 @@ +import test from "node:test"; +import assert from "node:assert/strict"; + +// ─── Provider Registrations ───────────────────────────────────────────────── + +test("haiper provider is registered", async () => { + const { APIKEY_PROVIDERS } = await import("../../src/shared/constants/providers.ts"); + assert.ok(APIKEY_PROVIDERS.haiper, "haiper should be in APIKEY_PROVIDERS"); + assert.equal(APIKEY_PROVIDERS.haiper.id, "haiper"); + assert.equal(APIKEY_PROVIDERS.haiper.alias, "hp"); +}); + +test("leonardo provider is registered", async () => { + const { APIKEY_PROVIDERS } = await import("../../src/shared/constants/providers.ts"); + assert.ok(APIKEY_PROVIDERS.leonardo, "leonardo should be in APIKEY_PROVIDERS"); + assert.equal(APIKEY_PROVIDERS.leonardo.id, "leonardo"); +}); + +test("ideogram provider is registered", async () => { + const { APIKEY_PROVIDERS } = await import("../../src/shared/constants/providers.ts"); + assert.ok(APIKEY_PROVIDERS.ideogram, "ideogram should be in APIKEY_PROVIDERS"); + assert.equal(APIKEY_PROVIDERS.ideogram.id, "ideogram"); +}); + +test("suno provider is registered", async () => { + const { APIKEY_PROVIDERS } = await import("../../src/shared/constants/providers.ts"); + assert.ok(APIKEY_PROVIDERS.suno, "suno should be in APIKEY_PROVIDERS"); + assert.equal(APIKEY_PROVIDERS.suno.id, "suno"); +}); + +test("udio provider is registered", async () => { + const { APIKEY_PROVIDERS } = await import("../../src/shared/constants/providers.ts"); + assert.ok(APIKEY_PROVIDERS.udio, "udio should be in APIKEY_PROVIDERS"); + assert.equal(APIKEY_PROVIDERS.udio.id, "udio"); +}); + +// ─── VIDEO_PROVIDER_IDS ───────────────────────────────────────────────────── + +test("VIDEO_PROVIDER_IDS includes haiper and leonardo", async () => { + const { VIDEO_PROVIDER_IDS } = await import("../../src/shared/constants/providers.ts"); + assert.ok(VIDEO_PROVIDER_IDS.has("haiper"), "haiper should be in VIDEO_PROVIDER_IDS"); + assert.ok(VIDEO_PROVIDER_IDS.has("leonardo"), "leonardo should be in VIDEO_PROVIDER_IDS"); +}); + +// ─── Video Registry ───────────────────────────────────────────────────────── + +test("haiper video provider is in video registry", async () => { + const { VIDEO_PROVIDERS } = await import("../../open-sse/config/videoRegistry.ts"); + assert.ok(VIDEO_PROVIDERS.haiper, "haiper should be in VIDEO_PROVIDERS"); + assert.equal(VIDEO_PROVIDERS.haiper.format, "haiper-video"); + assert.ok(VIDEO_PROVIDERS.haiper.models.length > 0); +}); + +test("leonardo video provider is in video registry", async () => { + const { VIDEO_PROVIDERS } = await import("../../open-sse/config/videoRegistry.ts"); + assert.ok(VIDEO_PROVIDERS.leonardo, "leonardo should be in VIDEO_PROVIDERS"); + assert.equal(VIDEO_PROVIDERS.leonardo.format, "leonardo-video"); +}); + +// ─── Image Registry ───────────────────────────────────────────────────────── + +test("haiper image provider is in image registry", async () => { + const { IMAGE_PROVIDERS } = await import("../../open-sse/config/imageRegistry.ts"); + assert.ok(IMAGE_PROVIDERS.haiper, "haiper should be in IMAGE_PROVIDERS"); + assert.equal(IMAGE_PROVIDERS.haiper.format, "haiper-image"); +}); + +test("leonardo image provider is in image registry", async () => { + const { IMAGE_PROVIDERS } = await import("../../open-sse/config/imageRegistry.ts"); + assert.ok(IMAGE_PROVIDERS.leonardo, "leonardo should be in IMAGE_PROVIDERS"); + assert.equal(IMAGE_PROVIDERS.leonardo.format, "leonardo-image"); +}); + +test("ideogram image provider is in image registry", async () => { + const { IMAGE_PROVIDERS } = await import("../../open-sse/config/imageRegistry.ts"); + assert.ok(IMAGE_PROVIDERS.ideogram, "ideogram should be in IMAGE_PROVIDERS"); + assert.equal(IMAGE_PROVIDERS.ideogram.format, "ideogram-image"); +}); + +// ─── Music Registry ───────────────────────────────────────────────────────── + +test("suno music provider is in music registry", async () => { + const { MUSIC_PROVIDERS } = await import("../../open-sse/config/musicRegistry.ts"); + assert.ok(MUSIC_PROVIDERS.suno, "suno should be in MUSIC_PROVIDERS"); + assert.equal(MUSIC_PROVIDERS.suno.format, "suno-music"); +}); + +test("udio music provider is in music registry", async () => { + const { MUSIC_PROVIDERS } = await import("../../open-sse/config/musicRegistry.ts"); + assert.ok(MUSIC_PROVIDERS.udio, "udio should be in MUSIC_PROVIDERS"); + assert.equal(MUSIC_PROVIDERS.udio.format, "udio-music"); +}); + +// ─── Handler Functions Exist ───────────────────────────────────────────────── + +test("videoGeneration handler has haiper-video dispatch", async () => { + const mod = await import("../../open-sse/handlers/videoGeneration.ts"); + assert.equal(typeof mod.handleVideoGeneration, "function"); +}); + +test("imageGeneration handler has ideogram-image dispatch", async () => { + const mod = await import("../../open-sse/handlers/imageGeneration.ts"); + assert.equal(typeof mod.handleImageGeneration, "function"); +}); + +test("musicGeneration handler has suno-music dispatch", async () => { + const mod = await import("../../open-sse/handlers/musicGeneration.ts"); + assert.equal(typeof mod.handleMusicGeneration, "function"); +});