import { describe, it, expect, beforeEach } from 'vitest'; import { useNotesStore } from '../stores/notes'; function createNote(overrides: Record = {}) { return { id: crypto.randomUUID(), title: 'Test Note', type: 'note' as const, content: { type: 'doc', content: [] }, plainText: '', status: 'active' as const, workspaceId: 'ws-1', tags: [], folderId: null, createdAt: new Date().toISOString(), updatedAt: new Date().toISOString(), ...overrides, }; } describe('useNotesStore', () => { beforeEach(() => { useNotesStore.setState({ notes: [], folders: [], selectedNoteId: null, searchQuery: '', loading: false }); }); it('starts with empty notes', () => { expect(useNotesStore.getState().notes).toHaveLength(0); }); it('adds a note', () => { const note = createNote(); useNotesStore.getState().addNote(note); expect(useNotesStore.getState().notes).toHaveLength(1); }); it('updates a note', () => { const note = createNote(); useNotesStore.getState().addNote(note); useNotesStore.getState().updateNote(note.id, { title: 'Updated' }); expect(useNotesStore.getState().notes[0]?.title).toBe('Updated'); }); it('removes a note', () => { const note = createNote(); useNotesStore.getState().addNote(note); useNotesStore.getState().removeNote(note.id); expect(useNotesStore.getState().notes).toHaveLength(0); }); it('sets selected note', () => { useNotesStore.getState().setSelectedNoteId('note-1'); expect(useNotesStore.getState().selectedNoteId).toBe('note-1'); }); it('sets search query', () => { useNotesStore.getState().setSearchQuery('hello'); expect(useNotesStore.getState().searchQuery).toBe('hello'); }); });