import { describe, it, expect } from 'vitest'; import { UrlHighlighter } from '../../client/utils/url-highlighter'; import { CastConverter } from '../../client/utils/cast-converter'; describe('Utility Functions', () => { describe('UrlHighlighter', () => { it('should detect http URLs', () => { const highlighter = new UrlHighlighter(); const text = 'Check out http://example.com for more info'; const result = highlighter.highlight(text); expect(result).toContain(''); }); it('should detect https URLs', () => { const highlighter = new UrlHighlighter(); const text = 'Secure site: https://secure.example.com/path'; const result = highlighter.highlight(text); expect(result).toContain('href="https://secure.example.com/path"'); }); it('should handle multiple URLs', () => { const highlighter = new UrlHighlighter(); const text = 'Visit http://site1.com and https://site2.com'; const result = highlighter.highlight(text); const matches = result.match(/]*>/g); expect(matches).toHaveLength(2); }); it('should preserve text around URLs', () => { const highlighter = new UrlHighlighter(); const text = 'Before http://example.com after'; const result = highlighter.highlight(text); expect(result).toMatch(/^Before ]*>http:\/\/example\.com<\/a> after$/); }); it('should handle text without URLs', () => { const highlighter = new UrlHighlighter(); const text = 'No URLs here, just plain text'; const result = highlighter.highlight(text); expect(result).toBe(text); }); it('should escape HTML in non-URL text', () => { const highlighter = new UrlHighlighter(); const text = ' http://safe.com'; const result = highlighter.highlight(text); expect(result).not.toContain('