import type { MockInstance } from 'vitest'; import { getInitials } from './labelUtil'; describe('labelUtil.getInitials', () => { it.each([ ['', ''], // simple words ['Hello', 'He'], ['Hello World', 'HW'], ['H', 'H'], // multiple spaces ['Double Space', 'DS'], [' ', ''], // simple emoji ['πŸ‘‹ Hello', 'πŸ‘‹H'], ['πŸ‘‹Hello', 'πŸ‘‹H'], ['Hello πŸ‘‹', 'HπŸ‘‹'], ['HelloπŸ‘‹', 'He'], // combined emojis ['1️⃣ 1️⃣', '1️⃣1️⃣'], ['1️⃣', '1️⃣'], ['πŸ‘©β€βš•οΈD πŸ‘©β€βš•οΈD', 'πŸ‘©β€βš•οΈπŸ‘©β€βš•οΈ'], ])('turns "%s" into "%s"', (input, output) => { expect(getInitials(input)).toBe(output); }); describe('when Intl.Segmenter is not supported', () => { let intlSpy: MockInstance; beforeEach(() => { // No Intl.Segmenter support intlSpy = vi.spyOn(globalThis, 'Intl', 'get'); intlSpy.mockImplementation(() => ({})); }); it.each([ ['', ''], // simple words ['Hello', 'He'], ['Hello World', 'HW'], ['H', 'H'], // multiple spaces ['Double Space', 'DS'], [' ', ''], ])('turns "%s" into "%s"', (input, output) => { expect(getInitials(input)).toBe(output); }); }); });