openskynet / src /agents /schema /clean-for-gemini.test.ts
Darochin's picture
Mirror OpenSkyNet workspace snapshot from Git HEAD
fc93158 verified
import { describe, expect, it } from "vitest";
import { cleanSchemaForGemini } from "./clean-for-gemini.js";
describe("cleanSchemaForGemini", () => {
it("coerces null properties to an empty object", () => {
const cleaned = cleanSchemaForGemini({
type: "object",
properties: null,
}) as { type?: unknown; properties?: unknown };
expect(cleaned.type).toBe("object");
expect(cleaned.properties).toEqual({});
});
it("coerces non-object properties to an empty object", () => {
const cleaned = cleanSchemaForGemini({
type: "object",
properties: "invalid",
}) as { properties?: unknown };
expect(cleaned.properties).toEqual({});
});
it("coerces array properties to an empty object", () => {
const cleaned = cleanSchemaForGemini({
type: "object",
properties: [],
}) as { properties?: unknown };
expect(cleaned.properties).toEqual({});
});
it("coerces nested null properties while preserving valid siblings", () => {
const cleaned = cleanSchemaForGemini({
type: "object",
properties: {
bad: {
type: "object",
properties: null,
},
good: {
type: "string",
},
},
}) as {
properties?: {
bad?: { properties?: unknown };
good?: { type?: unknown };
};
};
expect(cleaned.properties?.bad?.properties).toEqual({});
expect(cleaned.properties?.good?.type).toBe("string");
});
});