45 lines
1.8 KiB
TypeScript
45 lines
1.8 KiB
TypeScript
import { createRequire } from "node:module";
|
|
import { describe, expect, it } from "vitest";
|
|
|
|
import {
|
|
ModelConfigurationService,
|
|
portableRuntimeModelCandidates,
|
|
} from "../../apps/api/src/model-configuration.js";
|
|
|
|
const requireFromApi = createRequire(new URL("../../apps/api/package.json", import.meta.url));
|
|
const Database = requireFromApi("better-sqlite3") as new (path: string) => {
|
|
close(): void;
|
|
};
|
|
|
|
describe("POSTV1-02 portable runtime model seed", () => {
|
|
it("enables only models backed by the real OneAPI contract", () => {
|
|
const database = new Database(":memory:");
|
|
try {
|
|
const models = new ModelConfigurationService({ database, seedCandidates: portableRuntimeModelCandidates }).read();
|
|
const flash = models.models.find((model) => model.model_id === "gemini-3.1-flash-image-preview");
|
|
const pro = models.models.find((model) => model.model_id === "gemini-3-pro-image-preview");
|
|
const gpt = models.models.find((model) => model.model_id === "gpt-image-2");
|
|
|
|
expect(models.configured_default_model_id).toBe("gemini-3.1-flash-image-preview");
|
|
expect(flash).toMatchObject({
|
|
contract_validation_status: "verified",
|
|
enabled: true,
|
|
runtime_availability: { available_for_new_jobs: true, reason: "available" },
|
|
});
|
|
expect(flash?.route_profile).toMatchObject({ endpoint: "https://oneapi.intelligrow.cn/v1/chat/completions" });
|
|
expect(pro).toMatchObject({
|
|
contract_validation_status: "unverified",
|
|
enabled: false,
|
|
runtime_availability: { available_for_new_jobs: false, reason: "configured_disabled" },
|
|
});
|
|
expect(gpt).toMatchObject({
|
|
contract_validation_status: "verified",
|
|
enabled: true,
|
|
runtime_availability: { available_for_new_jobs: true, reason: "available" },
|
|
});
|
|
} finally {
|
|
database.close();
|
|
}
|
|
});
|
|
});
|