import { describe, expect, it } from 'vitest' import { parseNotes } from './notes' import { noteBodyToEditorHtml, noteBodyToPlainText, serializeRichNoteBody, } from './noteRichText' describe('notes persistence', () => { it('returns valid notes and ignores malformed entries', () => { const valid = { body: 'Meet at Mission Row.', createdAt: 10, id: 'note-1', pinned: true, title: 'Shift briefing', updatedAt: 20, } expect(parseNotes(JSON.stringify([valid, { id: 'broken' }]))).toEqual([ { ...valid, revision: 1 }, ]) }) it('recovers from missing or invalid storage', () => { expect(parseNotes(null)).toEqual([]) expect(parseNotes('{invalid')).toEqual([]) expect(parseNotes('{}')).toEqual([]) }) }) describe('notes rich text', () => { it('keeps legacy plain text notes editable without interpreting HTML', () => { expect(noteBodyToEditorHtml('First line\nnot markup')).toBe( '

First line
<b>not markup</b>

', ) }) it('stores formatted notes and derives a clean preview', () => { const body = serializeRichNoteBody( '

Briefing

Meet outside.

', ) expect(noteBodyToEditorHtml(body)).toContain('Meet') expect(noteBodyToPlainText(body)).toBe( 'Briefing\nMeet outside.\n• Radio\n• Vest', ) }) it('keeps encoded markup as literal preview text', () => { const body = serializeRichNoteBody( '

<script>literal</script>

', ) expect(noteBodyToPlainText(body)).toBe('') }) })