import { describe, expect, it } from 'vitest'; import { exportFilename, filenameFromContentDisposition } 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'); }); });