import { describe, expect, it } from 'vitest'; import { exportFilename, filenameFromContentDisposition, xlsxFilename } from './download'; describe('filenameFromContentDisposition', () => { it('RFC 5987 filename*', () => { expect(filenameFromContentDisposition("attachment; filename*=UTF-8''%D0%A1%D0%B2%D0%BE%D0%B4.xlsx")).toBe('Свод.xlsx'); }); it('filename в кавычках', () => { expect(filenameFromContentDisposition('attachment; filename="osv.xlsx"')).toBe('osv.xlsx'); }); it('filename* важнее filename', () => { expect(filenameFromContentDisposition('attachment; filename="a.xlsx"; filename*=UTF-8\'\'b.xlsx')).toBe('b.xlsx'); }); it('нет заголовка или имени', () => { expect(filenameFromContentDisposition(null)).toBeNull(); expect(filenameFromContentDisposition('inline')).toBeNull(); }); }); describe('exportFilename', () => { it('безопасное имя', () => { expect(exportFilename('ГК «Русский бисквит»/Север', 2024, 'Q3')).toBe('Сводная_ОСВ_ГК_«Русский_бисквит»_Север_2024_Q3.xlsx'); }); }); describe('xlsxFilename', () => { it('префикс, ГК, год и квартал', () => { expect(xlsxFilename('Шахматка', { groupName: 'ГК «Русский бисквит»', year: 2024, quarter: 'Q1' })).toBe( 'Шахматка_ГК_«Русский_бисквит»_2024_Q1.xlsx', ); }); it('без карточки версии — только префикс', () => { expect(xlsxFilename('Результирующая_таблица_ВГО', null)).toBe('Результирующая_таблица_ВГО.xlsx'); }); });