61 lines
1.4 KiB
TypeScript
61 lines
1.4 KiB
TypeScript
import { describe, expect, it } from "vitest";
|
|
import { OpenClawSchema } from "./zod-schema.js";
|
|
|
|
describe("OpenClawSchema talk validation", () => {
|
|
it("accepts a positive integer talk.silenceTimeoutMs", () => {
|
|
expect(() =>
|
|
OpenClawSchema.parse({
|
|
talk: {
|
|
silenceTimeoutMs: 1500,
|
|
},
|
|
}),
|
|
).not.toThrow();
|
|
});
|
|
|
|
it.each([
|
|
["boolean", true],
|
|
["string", "1500"],
|
|
["float", 1500.5],
|
|
])("rejects %s talk.silenceTimeoutMs", (_label, value) => {
|
|
expect(() =>
|
|
OpenClawSchema.parse({
|
|
talk: {
|
|
silenceTimeoutMs: value,
|
|
},
|
|
}),
|
|
).toThrow(/silenceTimeoutMs|number|integer/i);
|
|
});
|
|
|
|
it("rejects talk.provider when it does not match talk.providers", () => {
|
|
expect(() =>
|
|
OpenClawSchema.parse({
|
|
talk: {
|
|
provider: "acme",
|
|
providers: {
|
|
elevenlabs: {
|
|
voiceId: "voice-123",
|
|
},
|
|
},
|
|
},
|
|
}),
|
|
).toThrow(/talk\.provider|talk\.providers|missing "acme"/i);
|
|
});
|
|
|
|
it("rejects multi-provider talk config without talk.provider", () => {
|
|
expect(() =>
|
|
OpenClawSchema.parse({
|
|
talk: {
|
|
providers: {
|
|
acme: {
|
|
voiceId: "voice-acme",
|
|
},
|
|
elevenlabs: {
|
|
voiceId: "voice-eleven",
|
|
},
|
|
},
|
|
},
|
|
}),
|
|
).toThrow(/talk\.provider|required/i);
|
|
});
|
|
});
|