test: set up Vitest with 61 frontend tests

Add Vitest + testing-library/react + jsdom for frontend testing.
Tests cover: cn() utility (6), usePermissions hook (27), useTreeValidation
hook (22), and userPreferencesStore (6). CI updated to run frontend tests.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
chihlasm
2026-02-08 18:18:38 -05:00
parent f703684e15
commit 791fd133c4
10 changed files with 1650 additions and 3 deletions

View File

@@ -0,0 +1,28 @@
import { describe, it, expect } from 'vitest'
import { cn } from './utils'
describe('cn', () => {
it('merges class names', () => {
expect(cn('foo', 'bar')).toBe('foo bar')
})
it('handles conditional classes', () => {
expect(cn('base', false && 'hidden', 'visible')).toBe('base visible')
})
it('deduplicates tailwind classes', () => {
expect(cn('p-4', 'p-2')).toBe('p-2')
})
it('handles undefined and null', () => {
expect(cn('foo', undefined, null, 'bar')).toBe('foo bar')
})
it('handles empty inputs', () => {
expect(cn()).toBe('')
})
it('merges conflicting tailwind utilities', () => {
expect(cn('text-red-500', 'text-blue-500')).toBe('text-blue-500')
})
})