Files
record-app-next/__tests__/utils/cn.test.ts
2025-07-31 17:05:07 +08:00

44 lines
1.3 KiB
TypeScript

import { cn } from '@/lib/utils/cn'
describe('cn utility function', () => {
it('should merge class names correctly', () => {
const result = cn('text-red-500', 'bg-blue-500', 'p-4')
expect(result).toBe('text-red-500 bg-blue-500 p-4')
})
it('should handle conditional classes', () => {
const isActive = true
const result = cn('base-class', isActive && 'active-class', 'always-class')
expect(result).toBe('base-class active-class always-class')
})
it('should handle false conditional classes', () => {
const isActive = false
const result = cn('base-class', isActive && 'active-class', 'always-class')
expect(result).toBe('base-class always-class')
})
it('should handle arrays of classes', () => {
const result = cn(['class1', 'class2'], 'class3')
expect(result).toBe('class1 class2 class3')
})
it('should handle objects with boolean values', () => {
const result = cn({
'class1': true,
'class2': false,
'class3': true
})
expect(result).toBe('class1 class3')
})
it('should handle empty inputs', () => {
const result = cn()
expect(result).toBe('')
})
it('should handle mixed inputs', () => {
const result = cn('base', ['array1', 'array2'], { 'obj1': true, 'obj2': false }, 'string')
expect(result).toBe('base array1 array2 obj1 string')
})
})