Browse Source

test: update models route tests for nano-banana-2

Update expected model counts and sort order to account for the new
Nano Banana 2 Gemini model (3 Gemini models instead of 2).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
handoff-20260429-1057
shrimbly 5 months ago
parent
commit
60107dae00
  1. 32
      src/app/api/models/__tests__/route.test.ts

32
src/app/api/models/__tests__/route.test.ts

@ -124,12 +124,12 @@ describe("/api/models route", () => {
expect(response.status).toBe(200); expect(response.status).toBe(200);
expect(data.success).toBe(true); expect(data.success).toBe(true);
// 2 fal models + 2 gemini models (always included) // 2 fal models + 3 gemini models (always included)
expect(data.models).toHaveLength(4); expect(data.models).toHaveLength(5);
expect(data.providers.fal.success).toBe(true); expect(data.providers.fal.success).toBe(true);
expect(data.providers.fal.count).toBe(2); expect(data.providers.fal.count).toBe(2);
expect(data.providers.gemini.success).toBe(true); expect(data.providers.gemini.success).toBe(true);
expect(data.providers.gemini.count).toBe(2); expect(data.providers.gemini.count).toBe(3);
}); });
it("GET: should return models from both providers when both keys present", async () => { it("GET: should return models from both providers when both keys present", async () => {
@ -156,8 +156,8 @@ describe("/api/models route", () => {
expect(response.status).toBe(200); expect(response.status).toBe(200);
expect(data.success).toBe(true); expect(data.success).toBe(true);
// 1 replicate + 1 fal + 2 gemini models (always included) // 1 replicate + 1 fal + 3 gemini models (always included)
expect(data.models).toHaveLength(4); expect(data.models).toHaveLength(5);
expect(data.providers.replicate.success).toBe(true); expect(data.providers.replicate.success).toBe(true);
expect(data.providers.fal.success).toBe(true); expect(data.providers.fal.success).toBe(true);
expect(data.providers.gemini.success).toBe(true); expect(data.providers.gemini.success).toBe(true);
@ -445,8 +445,8 @@ describe("/api/models route", () => {
expect(response.status).toBe(200); expect(response.status).toBe(200);
expect(data.success).toBe(true); expect(data.success).toBe(true);
// 1 fal + 2 gemini models (always included) // 1 fal + 3 gemini models (always included)
expect(data.models).toHaveLength(3); expect(data.models).toHaveLength(4);
expect(data.providers.replicate.success).toBe(false); expect(data.providers.replicate.success).toBe(false);
expect(data.providers.fal.success).toBe(true); expect(data.providers.fal.success).toBe(true);
expect(data.providers.gemini.success).toBe(true); expect(data.providers.gemini.success).toBe(true);
@ -684,8 +684,8 @@ describe("/api/models route", () => {
const data = await response.json(); const data = await response.json();
expect(response.status).toBe(200); expect(response.status).toBe(200);
// 4 fal models + 2 gemini models (always included) // 4 fal models + 3 gemini models (always included)
expect(data.models).toHaveLength(6); expect(data.models).toHaveLength(7);
expect(data.models.find((m: { id: string }) => m.id === "fal-ai/flux")?.capabilities).toEqual(["text-to-image"]); expect(data.models.find((m: { id: string }) => m.id === "fal-ai/flux")?.capabilities).toEqual(["text-to-image"]);
expect(data.models.find((m: { id: string }) => m.id === "fal-ai/img2img")?.capabilities).toEqual(["image-to-image"]); expect(data.models.find((m: { id: string }) => m.id === "fal-ai/img2img")?.capabilities).toEqual(["image-to-image"]);
expect(data.models.find((m: { id: string }) => m.id === "fal-ai/t2v")?.capabilities).toEqual(["text-to-video"]); expect(data.models.find((m: { id: string }) => m.id === "fal-ai/t2v")?.capabilities).toEqual(["text-to-video"]);
@ -712,8 +712,8 @@ describe("/api/models route", () => {
const data = await response.json(); const data = await response.json();
expect(response.status).toBe(200); expect(response.status).toBe(200);
// 1 fal text-to-image + 1 fal text-to-speech (mapped to text-to-audio) + 2 gemini models (always included) // 1 fal text-to-image + 1 fal text-to-speech (mapped to text-to-audio) + 3 gemini models (always included)
expect(data.models).toHaveLength(4); expect(data.models).toHaveLength(5);
expect(data.models.find((m: { id: string }) => m.id === "fal-ai/flux")).toBeDefined(); expect(data.models.find((m: { id: string }) => m.id === "fal-ai/flux")).toBeDefined();
expect(data.models.find((m: { id: string }) => m.id === "fal-ai/tts")?.capabilities).toEqual(["text-to-audio"]); expect(data.models.find((m: { id: string }) => m.id === "fal-ai/tts")?.capabilities).toEqual(["text-to-audio"]);
}); });
@ -757,11 +757,13 @@ describe("/api/models route", () => {
expect(data.models[2].provider).toBe("gemini"); expect(data.models[2].provider).toBe("gemini");
expect(data.models[2].name).toBe("Nano Banana"); expect(data.models[2].name).toBe("Nano Banana");
expect(data.models[3].provider).toBe("gemini"); expect(data.models[3].provider).toBe("gemini");
expect(data.models[3].name).toBe("Nano Banana Pro"); expect(data.models[3].name).toBe("Nano Banana 2");
expect(data.models[4].provider).toBe("replicate"); expect(data.models[4].provider).toBe("gemini");
expect(data.models[4].name).toBe("alpha"); expect(data.models[4].name).toBe("Nano Banana Pro");
expect(data.models[5].provider).toBe("replicate"); expect(data.models[5].provider).toBe("replicate");
expect(data.models[5].name).toBe("zebra"); expect(data.models[5].name).toBe("alpha");
expect(data.models[6].provider).toBe("replicate");
expect(data.models[6].name).toBe("zebra");
}); });
}); });
}); });

Loading…
Cancel
Save