import { describe, expect, it } from 'vitest' import { isValidEmoji } from '../../shared/utils/emoji' describe('emoji validation', () => { it('validates basic emoji correctly', () => { // Basic emoji should pass expect(isValidEmoji('πŸ˜€')).toBe(true) expect(isValidEmoji('πŸ‘')).toBe(true) expect(isValidEmoji('❀️')).toBe(true) // Non-emoji should fail expect(isValidEmoji('abc')).toBe(false) expect(isValidEmoji('')).toBe(false) expect(isValidEmoji(' ')).toBe(false) }) it('validates emoji with modifiers correctly', () => { // Emoji with skin tone modifiers expect(isValidEmoji('πŸ‘πŸ»')).toBe(true) expect(isValidEmoji('πŸ‘πŸ½')).toBe(true) expect(isValidEmoji('πŸ‘πŸΏ')).toBe(true) }) it('validates complex emoji correctly', () => { // ZWJ sequences (family, couples, etc.) expect(isValidEmoji('πŸ‘¨β€πŸ‘©β€πŸ‘§')).toBe(true) expect(isValidEmoji('πŸ‘©β€πŸ’»')).toBe(true) // Flag emoji expect(isValidEmoji('πŸ‡ΊπŸ‡Έ')).toBe(true) expect(isValidEmoji('πŸ‡―πŸ‡΅')).toBe(true) // Regional flags like Scotland flag expect(isValidEmoji('🏴󠁧󠁒󠁳󠁣󠁴󠁿')).toBe(true) }) it('rejects multiple emoji', () => { // Multiple emoji should fail expect(isValidEmoji('πŸ˜€πŸ˜€')).toBe(false) expect(isValidEmoji('πŸ‘β€οΈ')).toBe(false) expect(isValidEmoji('πŸ‘¨β€πŸ‘©β€πŸ‘§πŸ‘¨β€πŸ‘©β€πŸ‘§')).toBe(false) }) it('rejects emoji with additional text', () => { expect(isValidEmoji('πŸ˜€abc')).toBe(false) expect(isValidEmoji('abcπŸ˜€')).toBe(false) expect(isValidEmoji(' πŸ˜€ ')).toBe(false) }) })