import { describe, expect, it } from 'vitest' import { getAvatarBgColor, getAvatarEmoji } from './getAvatarEmoji' const emojiBgColors: Record = { '🍉': '#D6EBFF', '🍎': '#FFD1DD', '🍓': '#FFE0AE', '🍋': '#CAEEB5', '🍌': '#FFF1C9', '🍇': '#E6D9FF', '🍊': '#D6F4FF', '🥥': '#F7E7D8', '🍒': '#DFF4D8', '🥭': '#FFD8C2', '🥝': '#FFE7C7', '🫒': '#F6E3B4', '🍈': '#D9F7E1', } describe('getAvatarBgColor', () => { it('returns the mapped color for the avatar emoji and stays consistent for the same id', () => { const id = 'user-123' const emoji = getAvatarEmoji(id) const color = getAvatarBgColor(id) expect(getAvatarEmoji(id)).toBe(emoji) expect(color).toBe(emojiBgColors[emoji]) expect(getAvatarBgColor(id)).toBe(color) }) it.each([ ['', '🍎', '#FFD1DD'], ['id-2', '🍌', '#FFF1C9'], ['id-3', '🍇', '#E6D9FF'], ['id-4', '🍊', '#D6F4FF'], ['id-5', '🍓', '#FFE0AE'], ['id-6', '🥥', '#F7E7D8'], ['id-7', '🍒', '#DFF4D8'], ['id-8', '🥭', '#FFD8C2'], ['id-9', '🍉', '#D6EBFF'], ['id-10', '🍋', '#CAEEB5'], ['id-11', '🥝', '#FFE7C7'], ['id-12', '🫒', '#F6E3B4'], ['id-13', '🍈', '#D9F7E1'], ])('returns the exact fruit pair for %j', (id, emoji, bgColor) => { expect(getAvatarEmoji(id)).toBe(emoji) expect(getAvatarBgColor(id)).toBe(bgColor) }) it('uses the absolute hash value for ids with a negative raw hash', () => { const id = 'id-100' expect(getAvatarEmoji(id)).toBe('🥭') expect(getAvatarBgColor(id)).toBe('#FFD8C2') }) it('is deterministic and keeps emoji and background color paired', () => { const ids = ['', 'id-2', 'id-7', 'id-13', 'id-100'] ids.forEach((id) => { const emoji = getAvatarEmoji(id) const color = getAvatarBgColor(id) expect(getAvatarEmoji(id)).toBe(emoji) expect(getAvatarBgColor(id)).toBe(color) expect(emojiBgColors[emoji]).toBe(color) }) }) })