import { describe, it, expect } from 'vitest'; import { groupByFirstLetter } from '../group-by-first-letter'; describe('groupByFirstLetter', () => { it('группирует по первой букве в верхнем регистре', () => { const result = groupByFirstLetter([ { title: 'apple' }, { title: 'Avocado' }, { title: 'banana' }, ]); expect(result['A']).toHaveLength(2); expect(result['B']).toHaveLength(1); }); it('нелатинские и нелитерные символы попадают в #', () => { const result = groupByFirstLetter([ { title: '123' }, { title: 'Яблоко' }, { title: 'Apple' }, ]); expect(result['#']).toHaveLength(2); expect(result['A']).toHaveLength(1); }); it('# сортируется в конец', () => { const result = groupByFirstLetter([ { title: 'zebra' }, { title: '1one' }, { title: 'apple' }, ]); expect(Object.keys(result)).toEqual(['A', 'Z', '#']); }); it('кастомное поле группировки', () => { const result = groupByFirstLetter([{ name: 'Bob' }, { name: 'Alice' }], 'name'); expect(Object.keys(result)).toEqual(['A', 'B']); }); it('пустой массив → {}', () => { expect(groupByFirstLetter([])).toEqual({}); }); });