* feat: make trashed notes read-only with visible banner in editor
When a note is in the Trash, the editor now shows a banner below the
breadcrumb ("This note is in the Trash") with Restore and Delete
permanently buttons. The BlockNote editor is set to read-only mode,
preventing accidental edits while still allowing navigation and copy.
- Add TrashedNoteBanner component with restore/delete actions
- Pass editable={false} to BlockNoteView when note is trashed
- Add delete_note Rust command for permanent file deletion
- Wire onDeleteNote through Editor → EditorContent → App
- Extract EditorBody to reduce EditorContent cyclomatic complexity
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* style: rustfmt fix
---------
Co-authored-by: Test <test@test.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
32 lines
1.4 KiB
TypeScript
32 lines
1.4 KiB
TypeScript
import { render, screen, fireEvent } from '@testing-library/react'
|
|
import { describe, it, expect, vi } from 'vitest'
|
|
import { TrashedNoteBanner } from './TrashedNoteBanner'
|
|
|
|
describe('TrashedNoteBanner', () => {
|
|
it('renders the banner with trash message', () => {
|
|
render(<TrashedNoteBanner onRestore={vi.fn()} onDeletePermanently={vi.fn()} />)
|
|
expect(screen.getByText('This note is in the Trash')).toBeInTheDocument()
|
|
expect(screen.getByTestId('trashed-note-banner')).toBeInTheDocument()
|
|
})
|
|
|
|
it('shows Restore and Delete permanently buttons', () => {
|
|
render(<TrashedNoteBanner onRestore={vi.fn()} onDeletePermanently={vi.fn()} />)
|
|
expect(screen.getByText('Restore')).toBeInTheDocument()
|
|
expect(screen.getByText('Delete permanently')).toBeInTheDocument()
|
|
})
|
|
|
|
it('calls onRestore when Restore button is clicked', () => {
|
|
const onRestore = vi.fn()
|
|
render(<TrashedNoteBanner onRestore={onRestore} onDeletePermanently={vi.fn()} />)
|
|
fireEvent.click(screen.getByTestId('trashed-banner-restore'))
|
|
expect(onRestore).toHaveBeenCalledOnce()
|
|
})
|
|
|
|
it('calls onDeletePermanently when Delete permanently button is clicked', () => {
|
|
const onDeletePermanently = vi.fn()
|
|
render(<TrashedNoteBanner onRestore={vi.fn()} onDeletePermanently={onDeletePermanently} />)
|
|
fireEvent.click(screen.getByTestId('trashed-banner-delete'))
|
|
expect(onDeletePermanently).toHaveBeenCalledOnce()
|
|
})
|
|
})
|