Skip to main content
Glama
zai-schema-introspection.test.js2.07 kB
import { describe, expect, it } from '@jest/globals'; import { z } from 'zod'; import { ZAIProvider } from '../../../src/ai-providers/zai.js'; describe('ZAIProvider - Schema Introspection', () => { const provider = new ZAIProvider(); it('should find array property in schema with single array', () => { const schema = z.object({ subtasks: z.array(z.string()), metadata: z.object({ count: z.number() }).nullable() }); const result = provider.findArrayPropertyInSchema(schema); expect(result).toBe('subtasks'); }); it('should find first array property when multiple arrays exist', () => { const schema = z.object({ tasks: z.array(z.string()), items: z.array(z.number()) }); const result = provider.findArrayPropertyInSchema(schema); expect(result).toBe('tasks'); }); it('should handle schema with no arrays', () => { const schema = z.object({ name: z.string(), count: z.number() }); const result = provider.findArrayPropertyInSchema(schema); expect(result).toBeNull(); }); it('should handle non-object schemas gracefully', () => { const schema = z.array(z.string()); const result = provider.findArrayPropertyInSchema(schema); expect(result).toBeNull(); }); it('should find complexityAnalysis array property', () => { const schema = z.object({ complexityAnalysis: z.array( z.object({ taskId: z.number(), score: z.number() }) ), metadata: z .union([z.object({ total: z.number() }), z.null()]) .default(null) }); const result = provider.findArrayPropertyInSchema(schema); expect(result).toBe('complexityAnalysis'); }); it('should work with actual PRD response schema', () => { const schema = z.object({ tasks: z.array( z.object({ id: z.number(), title: z.string() }) ), metadata: z .union([ z.object({ projectName: z.string(), totalTasks: z.number() }), z.null() ]) .default(null) }); const result = provider.findArrayPropertyInSchema(schema); expect(result).toBe('tasks'); }); });

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/eyaltoledano/claude-task-master'

If you have feedback or need assistance with the MCP directory API, please join our Discord server