Files
openchamber/packages/ui/src/components/chat/message/parts/generatedJsonResult.test.ts
T
Bohdan Triapitsyn 9c1eb755f9 fix: prevent embedded JSON examples from rendering as result cards
Only parse full-message generated JSON results
Keep markdown prose with JSON examples rendered normally
Add regression coverage for embedded JSON examples
2026-06-29 12:19:28 +03:00

41 lines
1.2 KiB
TypeScript

import { describe, expect, test } from 'bun:test';
import { parseGeneratedJsonResult } from './generatedJsonResult';
describe('parseGeneratedJsonResult', () => {
test('parses a full pull request JSON result', () => {
expect(parseGeneratedJsonResult('{"title":"Side task","body":"Details"}')).toEqual({
kind: 'pr',
title: 'Side task',
body: 'Details',
raw: JSON.stringify({ title: 'Side task', body: 'Details' }, null, 2),
});
});
test('parses a full fenced JSON result', () => {
expect(parseGeneratedJsonResult('```json\n{"subject":"Fix parser","highlights":["Narrow detection"]}\n```')).toEqual({
kind: 'commit',
subject: 'Fix parser',
highlights: ['Narrow detection'],
raw: JSON.stringify({ subject: 'Fix parser', highlights: ['Narrow detection'] }, null, 2),
});
});
test('ignores JSON examples embedded in markdown prose', () => {
const markdown = [
'Recommended endpoint:',
'',
'```json',
'{',
' "title": "Side task",',
' "prompt": "Investigate X"',
'}',
'```',
'',
'This should stay markdown.',
].join('\n');
expect(parseGeneratedJsonResult(markdown)).toBeNull();
});
});