import { describe, expect, it } from 'vitest'; import { counterpartyTypeLabel, documentStatusLabel, documentTypeLabel, fileStatusLabel, lineStatusLabel, matchKindLabel, periodLabel, quarterLabel, severityLabel, } from './labels'; import { osvPeriodLabel, quarterShortLabel } 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(quarterLabel('Q1')).toBe('1 квартал'); expect(quarterLabel('Q3')).toBe('3 квартал'); }); it('период', () => { expect(periodLabel(2024, 'Q1', false)).toBe('2024 К1'); // нарастающий итог за Q1 — это и есть первый квартал (как в макете [39]) expect(periodLabel(2024, 'Q1', true)).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('Заменён'); }); }); describe('подписи свода', () => { it('признак контрагента', () => { expect(counterpartyTypeLabel('GSK')).toBe('ГСК'); expect(counterpartyTypeLabel('GK')).toBe('ГК'); expect(counterpartyTypeLabel('EXTERNAL')).toBe('Внешний'); }); it('способ сопоставления', () => { expect(matchKindLabel('INN')).toBe('по ИНН'); expect(matchKindLabel('NAME')).toBe('по имени'); expect(matchKindLabel('ALIAS')).toBe('по алиасу'); expect(matchKindLabel('MANUAL')).toBe('вручную'); expect(matchKindLabel('PROPAGATED')).toBe('автоприменение'); expect(matchKindLabel(null)).toBe('не сопоставлен'); }); }); describe('подписи периода', () => { it('квартал коротко', () => { expect(quarterShortLabel('Q3')).toBe('К3'); }); it('период строки свода', () => { expect(osvPeriodLabel('2024 Q3')).toBe('9 мес. 2024 г.'); expect(osvPeriodLabel('2025 Q1')).toBe('3 мес. 2025 г.'); expect(osvPeriodLabel('странное')).toBe('странное'); }); }); describe('подписи формы v5.19', () => { it('статус строки', () => { expect(lineStatusLabel('ok')).toBe('Строка формы'); expect(lineStatusLabel('unreadable')).toBe('Код не распознан'); expect(lineStatusLabel('missing')).toBe('Кода нет'); expect(lineStatusLabel('detail')).toBe('Расшифровка'); }); it('уровень замечания', () => { expect(severityLabel('error')).toBe('Ошибка'); expect(severityLabel('info')).toBe('Информация'); }); });