import { describe, expect, it } from 'vitest' import { renderMarkdown, summarise, toMediaImage } from '../../frontend/server/utils/pocketbase' describe('renderMarkdown', () => { it('returns an empty string for null/undefined/empty input', () => { expect(renderMarkdown(null)).toBe('') expect(renderMarkdown(undefined)).toBe('') expect(renderMarkdown('')).toBe('') }) it('converts Markdown to HTML', () => { const html = renderMarkdown('# Titolo\n\nCorpo **grassetto**.') expect(html).toContain('

Titolo

') expect(html).toContain('grassetto') }) }) describe('summarise', () => { it('returns short text unchanged, stripped of Markdown syntax', () => { expect(summarise('# Titolo\n\nTesto breve.')).toBe('Titolo Testo breve.') }) it('strips code fences, images and unwraps links', () => { const source = '```js\nconst x = 1\n```\n![alt](img.png) [testo](https://example.com) fine.' expect(summarise(source)).toBe('testo fine.') }) it('clips long text on a word boundary with an ellipsis', () => { const source = 'parola '.repeat(40).trim() const result = summarise(source, 20) expect(result.length).toBeLessThanOrEqual(21) expect(result.endsWith('…')).toBe(true) expect(result).not.toContain(' …') }) it('returns an empty string for null/undefined input', () => { expect(summarise(null)).toBe('') expect(summarise(undefined)).toBe('') }) }) describe('toMediaImage', () => { it('returns null when there is no filename', () => { expect(toMediaImage('articles', 'abc123', '', 'alt')).toBeNull() expect(toMediaImage('articles', 'abc123', null, 'alt')).toBeNull() expect(toMediaImage('articles', 'abc123', undefined, 'alt')).toBeNull() }) it('builds the PocketBase file URL from collection, id and filename', () => { expect(toMediaImage('articles', 'abc123', 'cover.jpg', 'Testo alternativo')).toEqual({ url: '/api/files/articles/abc123/cover.jpg', alt: 'Testo alternativo', }) }) it('normalises a missing/empty alt to null', () => { expect(toMediaImage('articles', 'abc123', 'cover.jpg', null)).toEqual({ url: '/api/files/articles/abc123/cover.jpg', alt: null, }) expect(toMediaImage('articles', 'abc123', 'cover.jpg', '')).toEqual({ url: '/api/files/articles/abc123/cover.jpg', alt: null, }) }) })