arm-core/web/src/utils/download.test.ts
Andrey Epifancev c3d82bd293 fix(web): желательные пункты ревью шахматки, раунд 3 (ревью #158, AURORA-1538)
- форматтер сумм: проверка числа до сдвига запятой, Intl.StringNumericLiteral (ES2023.Intl) вместо any, без разбора скобок;
- запасные имена выгрузок xlsxFilename, отдельные флаги загрузки у двух «Экспорт»;
- useNotificationApi мемоизирован, загрузки — useCallback, зависимости эффектов полные;
- ячейки: расхождение в скобках, значок пропущенных строк ОСВ, «—» вместо выдуманного нуля;
- «Год»/«Период» версии только для чтения;
- сервис services/api/intercompanyMatrix.ts с withJsonBody, типы шахматки в types/api.ts, Account.kind.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-22 16:42:00 +04:00

36 lines
1.6 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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');
});
});