import { assertEquals, assertThrows, } from 'https://deno.land/std@0.224.0/assert/mod.ts' import { MeetingDocumentRequestError, parseGenerateMeetingDocumentRequest, parseProviderDocumentResult, } from './meeting-document-contract.ts' const meetingId = '11111111-1111-4111-8111-111111111111' const templateId = '22222222-2222-4222-8222-222222222222' const idempotencyKey = '33333333-3333-4333-8333-333333333333' Deno.test('meeting generation request is strict and normalized', () => { assertEquals(parseGenerateMeetingDocumentRequest({ meetingId, templateId, idempotencyKey, title: ' Weekly summary ', }), { meetingId, templateId, idempotencyKey, title: 'Weekly summary', model: 'claude-haiku-4-5-20251001', }) }) Deno.test('meeting generation request rejects unknown fields and bad identifiers', () => { assertThrows( () => parseGenerateMeetingDocumentRequest({ meetingId: 'not-a-uuid', templateId, idempotencyKey, title: 'Summary', }), MeetingDocumentRequestError, ) assertThrows( () => parseGenerateMeetingDocumentRequest({ meetingId, templateId, idempotencyKey, title: 'Summary', prompt: 'override server template', }), MeetingDocumentRequestError, ) }) Deno.test('provider result accepts text blocks and bounded token usage', () => { assertEquals(parseProviderDocumentResult({ content: [ { type: 'text', text: '## Summary' }, { type: 'tool_use', name: 'ignored' }, { type: 'text', text: 'Verified content' }, ], usage: { input_tokens: 14, output_tokens: 8 }, }), { content: '## Summary\n\nVerified content', inputTokens: 14, outputTokens: 8, }) assertEquals(parseProviderDocumentResult({ content: [] }), null) })