52 lines
1.7 KiB
TypeScript
52 lines
1.7 KiB
TypeScript
import { describe, it, expect, vi, beforeEach } from 'vitest'
|
|
import { renderHook, act } from '@testing-library/react'
|
|
import { useNoteLayout } from './useNoteLayout'
|
|
import { bindVaultConfigStore, getVaultConfig, resetVaultConfigStore } from '../utils/vaultConfigStore'
|
|
|
|
describe('useNoteLayout', () => {
|
|
beforeEach(() => {
|
|
resetVaultConfigStore()
|
|
bindVaultConfigStore(
|
|
{ zoom: null, view_mode: null, editor_mode: null, note_layout: null, tag_colors: null, status_colors: null, property_display_modes: null },
|
|
vi.fn(),
|
|
)
|
|
})
|
|
|
|
it('defaults to centered note layout', () => {
|
|
const { result } = renderHook(() => useNoteLayout())
|
|
|
|
expect(result.current.noteLayout).toBe('centered')
|
|
})
|
|
|
|
it('loads persisted left note layout from vault config', () => {
|
|
resetVaultConfigStore()
|
|
bindVaultConfigStore(
|
|
{ zoom: null, view_mode: null, editor_mode: null, note_layout: 'left', tag_colors: null, status_colors: null, property_display_modes: null },
|
|
vi.fn(),
|
|
)
|
|
|
|
const { result } = renderHook(() => useNoteLayout())
|
|
|
|
expect(result.current.noteLayout).toBe('left')
|
|
})
|
|
|
|
it('sets note layout and persists it to vault config', () => {
|
|
const { result } = renderHook(() => useNoteLayout())
|
|
|
|
act(() => result.current.setNoteLayout('left'))
|
|
|
|
expect(result.current.noteLayout).toBe('left')
|
|
expect(getVaultConfig().note_layout).toBe('left')
|
|
})
|
|
|
|
it('toggles between centered and left note layout', () => {
|
|
const { result } = renderHook(() => useNoteLayout())
|
|
|
|
act(() => result.current.toggleNoteLayout())
|
|
expect(result.current.noteLayout).toBe('left')
|
|
|
|
act(() => result.current.toggleNoteLayout())
|
|
expect(result.current.noteLayout).toBe('centered')
|
|
})
|
|
})
|