44 lines
1.3 KiB
TypeScript
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')
|
|
})
|
|
})
|