Files
blog/tests/unit/pocketbase.utils.test.ts
T

67 lines
2.3 KiB
TypeScript
Raw Normal View History

2026-09-11 11:41:52 +02:00
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('<h1>Titolo</h1>')
expect(html).toContain('<strong>grassetto</strong>')
})
})
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,
})
})
})