| 
									
										
										
										
											2024-07-18 17:35:10 +08:00
										 |  |  | import cn from './classnames' | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | describe('classnames', () => { | 
					
						
							|  |  |  |   test('classnames libs feature', () => { | 
					
						
							|  |  |  |     expect(cn('foo')).toBe('foo') | 
					
						
							|  |  |  |     expect(cn('foo', 'bar')).toBe('foo bar') | 
					
						
							|  |  |  |     expect(cn(['foo', 'bar'])).toBe('foo bar') | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     expect(cn(undefined)).toBe('') | 
					
						
							|  |  |  |     expect(cn(null)).toBe('') | 
					
						
							|  |  |  |     expect(cn(false)).toBe('') | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     expect(cn({ | 
					
						
							|  |  |  |       foo: true, | 
					
						
							|  |  |  |       bar: false, | 
					
						
							|  |  |  |       baz: true, | 
					
						
							|  |  |  |     })).toBe('foo baz') | 
					
						
							|  |  |  |   }) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   test('tailwind-merge', () => { | 
					
						
							| 
									
										
										
										
											2025-03-31 14:36:01 +08:00
										 |  |  |     /* eslint-disable tailwindcss/classnames-order */ | 
					
						
							| 
									
										
										
										
											2024-07-18 17:35:10 +08:00
										 |  |  |     expect(cn('p-0')).toBe('p-0') | 
					
						
							| 
									
										
										
										
											2025-03-31 14:36:01 +08:00
										 |  |  |     expect(cn('text-right text-center text-left')).toBe('text-left') | 
					
						
							|  |  |  |     expect(cn('pl-4 p-8')).toBe('p-8') | 
					
						
							| 
									
										
										
										
											2024-07-18 17:35:10 +08:00
										 |  |  |     expect(cn('m-[2px] m-[4px]')).toBe('m-[4px]') | 
					
						
							|  |  |  |     expect(cn('m-1 m-[4px]')).toBe('m-[4px]') | 
					
						
							| 
									
										
										
										
											2025-03-31 14:36:01 +08:00
										 |  |  |     expect(cn('overflow-x-auto hover:overflow-x-hidden overflow-x-scroll')).toBe( | 
					
						
							| 
									
										
										
										
											2024-07-18 17:35:10 +08:00
										 |  |  |       'hover:overflow-x-hidden overflow-x-scroll', | 
					
						
							|  |  |  |     ) | 
					
						
							|  |  |  |     expect(cn('h-10 h-min')).toBe('h-min') | 
					
						
							|  |  |  |     expect(cn('bg-grey-5 bg-hotpink')).toBe('bg-hotpink') | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     expect(cn('hover:block hover:inline')).toBe('hover:inline') | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-03-31 14:36:01 +08:00
										 |  |  |     expect(cn('font-medium !font-bold')).toBe('font-medium !font-bold') | 
					
						
							|  |  |  |     expect(cn('!font-medium !font-bold')).toBe('!font-bold') | 
					
						
							| 
									
										
										
										
											2024-07-18 17:35:10 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  |     expect(cn('text-gray-100 text-primary-200')).toBe('text-primary-200') | 
					
						
							|  |  |  |     expect(cn('text-some-unknown-color text-components-input-bg-disabled text-primary-200')).toBe('text-primary-200') | 
					
						
							|  |  |  |     expect(cn('bg-some-unknown-color bg-components-input-bg-disabled bg-primary-200')).toBe('bg-primary-200') | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     expect(cn('border-t border-white/10')).toBe('border-t border-white/10') | 
					
						
							|  |  |  |     expect(cn('border-t border-white')).toBe('border-t border-white') | 
					
						
							|  |  |  |     expect(cn('text-3.5xl text-black')).toBe('text-3.5xl text-black') | 
					
						
							|  |  |  |   }) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   test('classnames combined with tailwind-merge', () => { | 
					
						
							|  |  |  |     expect(cn('text-right', { | 
					
						
							|  |  |  |       'text-center': true, | 
					
						
							|  |  |  |     })).toBe('text-center') | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     expect(cn('text-right', { | 
					
						
							|  |  |  |       'text-center': false, | 
					
						
							|  |  |  |     })).toBe('text-right') | 
					
						
							|  |  |  |   }) | 
					
						
							|  |  |  | }) |