96 lines
2.7 KiB
TypeScript
96 lines
2.7 KiB
TypeScript
import { expect, test } from "@playwright/test";
|
|
import {
|
|
createAtlasCloudImagePreset,
|
|
inferAtlasCloudMediaKind,
|
|
} from "@/lib/ai/atlascloud-models";
|
|
import {
|
|
is3DModelDescriptor,
|
|
isImageGenerationModelDescriptor,
|
|
isVideoModelDescriptor,
|
|
} from "@/lib/ai/model-classification";
|
|
|
|
const atlasHunyuan3D = {
|
|
model: "tencent/hunyuan3d-pro/text-to-3d",
|
|
type: "Image",
|
|
displayName: "Hunyuan 3D Pro Text-to-3D",
|
|
categories: ["TEXT-TO-3D"],
|
|
tags: ["TEXT-TO-3D", "NEW"],
|
|
};
|
|
|
|
test.describe("AI model media classification", () => {
|
|
test("keeps Atlas 3D entries out of image and video categories", () => {
|
|
expect(inferAtlasCloudMediaKind(atlasHunyuan3D)).toBe("3d");
|
|
|
|
const descriptor = {
|
|
providerType: "atlascloud",
|
|
modelId: atlasHunyuan3D.model,
|
|
capabilities: {
|
|
kind: "3d",
|
|
mediaType: "3d",
|
|
supportedModes: ["text-to-3d"],
|
|
},
|
|
supportsImageGen: false,
|
|
};
|
|
|
|
expect(is3DModelDescriptor(descriptor)).toBe(true);
|
|
expect(isImageGenerationModelDescriptor(descriptor)).toBe(false);
|
|
expect(isVideoModelDescriptor(descriptor)).toBe(false);
|
|
});
|
|
|
|
test("writes 3D Atlas presets with model-level capabilities", () => {
|
|
const preset = createAtlasCloudImagePreset(
|
|
atlasHunyuan3D,
|
|
{
|
|
components: {
|
|
schemas: {
|
|
Input: {
|
|
type: "object",
|
|
properties: {
|
|
model: { type: "string" },
|
|
prompt: { type: "string" },
|
|
},
|
|
required: ["model", "prompt"],
|
|
},
|
|
},
|
|
},
|
|
},
|
|
0
|
|
);
|
|
|
|
expect(preset.supportsImageGen).toBe(false);
|
|
expect(preset.capabilities).toMatchObject({
|
|
kind: "3d",
|
|
mediaType: "3d",
|
|
supportedModes: ["text-to-3d"],
|
|
});
|
|
});
|
|
|
|
test("still distinguishes Atlas image and video descriptors", () => {
|
|
const imageDescriptor = {
|
|
providerType: "atlascloud",
|
|
modelId: "black-forest-labs/flux-2-pro/text-to-image",
|
|
capabilities: {
|
|
kind: "text-to-image",
|
|
mediaType: "image",
|
|
supportedModes: ["text-to-image"],
|
|
},
|
|
supportsImageGen: true,
|
|
};
|
|
const videoDescriptor = {
|
|
providerType: "atlascloud",
|
|
modelId: "veed/fabric-1.0/image-to-video",
|
|
capabilities: {
|
|
kind: "video",
|
|
mediaType: "video",
|
|
supportedModes: ["image-to-video"],
|
|
},
|
|
supportsImageGen: false,
|
|
};
|
|
|
|
expect(isImageGenerationModelDescriptor(imageDescriptor)).toBe(true);
|
|
expect(isVideoModelDescriptor(imageDescriptor)).toBe(false);
|
|
expect(isVideoModelDescriptor(videoDescriptor)).toBe(true);
|
|
expect(isImageGenerationModelDescriptor(videoDescriptor)).toBe(false);
|
|
});
|
|
});
|