import { afterEach, describe, expect, it } from 'vitest' import { renderToStaticMarkup } from 'react-dom/server' import { AgentResultView, clearAgentResultRenderers, listAgentResultRenderers, registerAgentResultRenderer, resolveAgentResultRenderer, type AgentResultRendererProps, } from './agent-result-registry' const Generic = ({ result }: AgentResultRendererProps) => generic:{String(result.title)} const Invoice = ({ result }: AgentResultRendererProps) => invoice:{String(result.title)} afterEach(() => clearAgentResultRenderers()) describe('agent result registry', () => { it('renders a result through the renderer of its kind', () => { registerAgentResultRenderer('record', Generic) const html = renderToStaticMarkup( , ) expect(html).toBe('generic:Llanta') }) it('prefers a model-specific renderer over the generic one', () => { registerAgentResultRenderer('record', Generic) registerAgentResultRenderer('record', Invoice, { model: 'invoices' }) expect(resolveAgentResultRenderer({ kind: 'record', model: 'invoices' })).toBe(Invoice) expect(resolveAgentResultRenderer({ kind: 'record', model: 'products' })).toBe(Generic) }) it('renders nothing (never the raw payload) for an unknown kind', () => { const html = renderToStaticMarkup( , ) expect(html).toBe('') expect( renderToStaticMarkup( sin vista} />, ), ).toBe('sin vista') }) it('unregister only removes its own registration', () => { const off = registerAgentResultRenderer('count', Generic) registerAgentResultRenderer('count', Invoice) off() expect(resolveAgentResultRenderer({ kind: 'count' })).toBe(Invoice) expect(listAgentResultRenderers()).toEqual(['count']) }) })