35 lines
911 B
TypeScript

import { describe, expect, it } from 'vitest'
import { cn } from './cn'
describe('cn', () => {
it('merges class names', () => {
expect(cn('foo', 'bar')).toBe('foo bar')
})
it('handles conditional classes with false', () => {
expect(cn('foo', false, 'baz')).toBe('foo baz')
})
it('handles conditional classes with string', () => {
expect(cn('foo', 'bar', 'baz')).toBe('foo bar baz')
})
it('handles undefined and null', () => {
expect(cn('foo', undefined, null, 'bar')).toBe('foo bar')
})
it('merges conflicting Tailwind classes', () => {
expect(cn('px-2 py-1', 'px-4')).toBe('py-1 px-4')
expect(cn('text-red-500', 'text-blue-500')).toBe('text-blue-500')
})
it('handles arrays', () => {
expect(cn(['foo', 'bar'], 'baz')).toBe('foo bar baz')
})
it('handles objects', () => {
expect(cn({ foo: true, bar: false, baz: true })).toBe('foo baz')
})
})