arm-web/src/utils/labels.test.ts
Andrey Epifancev e593236eed feat: apiFetchBlob, деньги строками, подписи статусов, dev-proxy (#3)
- Клиент API: ApiError.body, apiFetchBlob для бинарных ответов с автоматическим разбором ошибок
- Деньги: formatAmount (строка Decimal → форматированная с пробелами), parseAmountInput (ввод → нормализация)
- Подписи: documentTypeLabel, documentStatusLabel, fileStatusLabel, periodLabel для UI
- Dev-proxy: /api → localhost:8000 (CORS-free, Content-Disposition читается)
- Типы: Quarter, DocumentType, DocumentStatus, FileStatus в src/types/api.ts
- Удалён smoke.test.ts

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EAKRDNzXtRrwmWz9z6PZu3
2026-10-08 00:51:47 +04:00

32 lines
1.7 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 { documentStatusLabel, documentTypeLabel, fileStatusLabel, periodLabel } from './labels';
describe('labels', () => {
it('тип документа', () => {
expect(documentTypeLabel('OSV', '60.01')).toBe('ОСВ 60.01');
expect(documentTypeLabel('OSV', null)).toBe('ОСВ');
expect(documentTypeLabel('BALANCE', null)).toBe('Бух. баланс');
expect(documentTypeLabel('INCOME', null)).toBe('ОФР');
expect(documentTypeLabel('DISCLOSURE', null)).toBe('Расшифровка');
expect(documentTypeLabel('OTHER', null)).toBe('Прочее');
});
it('период', () => {
expect(periodLabel(2024, 'Q1', false)).toBe('2024 К1');
expect(periodLabel(2024, 'Q3', true)).toBe('2024 · 9 мес.');
expect(periodLabel(2024, 'Q4', true)).toBe('2024 · 12 мес.');
expect(periodLabel(2024, null, null)).toBe('период не определён');
expect(periodLabel(null, null, null)).toBe('период не определён');
});
it('статусы', () => {
expect(documentStatusLabel('NEEDS_CHECK')).toBe('Требуется проверка');
expect(documentStatusLabel('RECOGNIZED')).toBe('Требуется проверка');
expect(documentStatusLabel('CONFIRMED')).toBe('Загружен');
expect(documentStatusLabel('ERROR')).toBe('Ошибка');
expect(fileStatusLabel('UPLOADED')).toBe('Обработка');
expect(fileStatusLabel('PROCESSING')).toBe('Обработка');
expect(fileStatusLabel('PROCESSED')).toBe('Обработан');
expect(fileStatusLabel('ERROR')).toBe('Ошибка');
expect(fileStatusLabel('SUPERSEDED')).toBe('Заменён');
});
});