import { beforeEach, expect, test } from 'vitest'; import { MAX_VERSIONS, listNoteVersions, recordNoteVersion } from './noteHistory.js'; beforeEach(() => localStorage.clear()); test('versions are kept newest first, and blanks and repeats are skipped', () => { recordNoteVersion('c1', 'observation', 'first', 1); recordNoteVersion('c1', 'observation', 'first', 2); // same as the newest recordNoteVersion('c1', 'observation', ' ', 3); // blank recordNoteVersion('c1', 'observation', 'second', 4); expect(listNoteVersions('c1', 'observation').map((v) => v.text)).toEqual(['second', 'first']); expect(listNoteVersions('c1', 'application')).toEqual([]); expect(listNoteVersions('c2', 'observation')).toEqual([]); }); test('only the latest versions are kept', () => { for (let i = 0; i < MAX_VERSIONS + 5; i += 1) recordNoteVersion('c1', 'observation', `v${i}`, i); const list = listNoteVersions('c1', 'observation'); expect(list).toHaveLength(MAX_VERSIONS); expect(list[0].text).toBe(`v${MAX_VERSIONS + 4}`); }); test('a damaged store reads as empty', () => { localStorage.setItem('note-history:c1:observation', '{nope'); expect(listNoteVersions('c1', 'observation')).toEqual([]); });