Initial commit
This commit is contained in:
44
__tests__/utils/cn.test.ts
Normal file
44
__tests__/utils/cn.test.ts
Normal file
@ -0,0 +1,44 @@
|
||||
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')
|
||||
})
|
||||
})
|
||||
Reference in New Issue
Block a user