import { getCodeBlock } from '../textNormalization'; describe('getCodeBlock', () => { test('returns null for input without code block', () => { const text = 'This is some text without a code block.'; expect(getCodeBlock(text)).toBeNull(); }); test('returns normalized code block for input with code block', () => { const text = 'This is some text with a code block:\n```js\nconsole.log("Hello, world!");\n```'; const expected = 'console.log("Hello, world!");'; expect(getCodeBlock(text)).toBe(expected); }); test('normalizes leading/trailing whitespace', () => { const text = 'Here is a code block with leading/trailing whitespace:\n```\n foo \n```'; const expected = 'foo'; expect(getCodeBlock(text)).toBe(expected); }); test('normalizes multiple lines of code', () => { const text = 'Here is a code block with multiple lines:\n```html\n

Hello, world!

\n

Welcome to my website.

\n```'; const expected = '

Hello, world!

\n

Welcome to my website.

'; expect(getCodeBlock(text)).toBe(expected); }); test('normalizes empty code block', () => { const text = 'Here is an empty code block:\n```\n```'; expect(getCodeBlock(text)).toBeNull(); }); test('normalizes code block with leading/trailing newlines', () => { const text = '\nHere is a code block with leading/trailing newlines:\n```\n\nfoo\n\n```'; const expected = 'foo'; expect(getCodeBlock(text)).toBe(expected); }); test('normalizes code block with leading/trailing backticks', () => { const text = 'Here is a code block with leading/trailing backticks:\n```js```\nconsole.log("Hello, world!");\n``````'; const expected = 'console.log("Hello, world!");'; expect(getCodeBlock(text)).toBe(expected); }); test('normalizes multiple lines of code', () => { const text = 'Here is a code block with multiple lines:\n```js\nfunction add(a, b) {\n return a + b;\n}\n```'; const expected = 'function add(a, b) {\n return a + b;\n}'; expect(getCodeBlock(text)).toBe(expected); }); test('normalizes multiple lines of code', () => { const text = 'Here is a code block with multiple lines:\n```json\n{\n "name": "John",\n "age": 30,\n "city": "New York"\n}\n```'; const expected = '{\n "name": "John",\n "age": 30,\n "city": "New York"\n}'; expect(getCodeBlock(text)).toBe(expected); }); });