nexus/server/src/__tests__/36-voice-schema.test.ts
Nexus Dev 14e059862b feat(36-02): add voiceMode field to createMessageSchema and ChatMessage interface
- Add VOICE_MODES constant and VoiceMode type to shared validators/chat.ts
- Extend createMessageSchema with optional voiceMode enum field
- Add voiceMode optional field to ChatMessage interface in types/chat.ts
- Add 36-voice-schema.test.ts with 6 passing tests for voiceMode validation
2026-04-04 03:55:49 +00:00

63 lines
1.9 KiB
TypeScript

// [nexus] Schema validation tests for voiceMode field (Plan 36-02)
import { describe, it, expect } from "vitest";
import { createMessageSchema } from "@paperclipai/shared/validators/chat";
describe("createMessageSchema — voiceMode field", () => {
it("parses voiceMode 'full_voice' and returns the value", () => {
const result = createMessageSchema.parse({
role: "user",
content: "hi",
voiceMode: "full_voice",
});
expect(result.voiceMode).toBe("full_voice");
});
it("parses voiceMode 'voice_input' and returns the value", () => {
const result = createMessageSchema.parse({
role: "user",
content: "hi",
voiceMode: "voice_input",
});
expect(result.voiceMode).toBe("voice_input");
});
it("parses voiceMode 'text' and returns the value", () => {
const result = createMessageSchema.parse({
role: "user",
content: "hi",
voiceMode: "text",
});
expect(result.voiceMode).toBe("text");
});
it("parses without voiceMode and returns undefined for voiceMode", () => {
const result = createMessageSchema.parse({
role: "user",
content: "hi",
});
expect(result.voiceMode).toBeUndefined();
});
it("throws ZodError when voiceMode is invalid", () => {
expect(() =>
createMessageSchema.parse({
role: "user",
content: "hi",
voiceMode: "invalid",
})
).toThrow();
});
it("preserves existing fields — role, content, agentId, messageType", () => {
const result = createMessageSchema.parse({
role: "assistant",
content: "hello world",
agentId: "00000000-0000-0000-0000-000000000001",
messageType: "markdown",
});
expect(result.role).toBe("assistant");
expect(result.content).toBe("hello world");
expect(result.agentId).toBe("00000000-0000-0000-0000-000000000001");
expect(result.messageType).toBe("markdown");
});
});