25 lines
1.1 KiB
TypeScript
25 lines
1.1 KiB
TypeScript
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');
|
||
});
|
||
});
|