import { describe, expect, it } from 'vitest'; import { columnTitle, documentPageTitle, documentSubtitle, formTitle, formatReportDate, reviewActions, statusBadge } from './reviewView'; describe('formatReportDate', () => { it('ISO → дд.мм.гггг', () => { expect(formatReportDate('2025-09-30')).toBe('30.09.2025'); }); it('пусто и мусор', () => { expect(formatReportDate(null)).toBeNull(); expect(formatReportDate('')).toBeNull(); expect(formatReportDate('сентябрь')).toBe('сентябрь'); }); }); describe('formTitle', () => { it('по типу формы', () => { expect(formTitle('BALANCE')).toBe('Бухгалтерский баланс'); expect(formTitle('INCOME')).toBe('Отчёт о финансовых результатах'); }); }); describe('documentPageTitle', () => { it('ОСВ — просмотр, формы — проверка распознавания', () => { expect(documentPageTitle('OSV')).toBe('Просмотр ОСВ'); expect(documentPageTitle('BALANCE')).toBe('Проверка распознавания'); }); }); describe('reviewActions', () => { it('просмотр, документ на проверке', () => { expect(reviewActions('NEEDS_CHECK', false)).toEqual({ canEdit: true, canConfirm: true, canSave: false }); }); it('режим правки', () => { expect(reviewActions('NEEDS_CHECK', true)).toEqual({ canEdit: false, canConfirm: false, canSave: true }); }); it('CONFIRMED и ERROR не редактируются и не подтверждаются', () => { expect(reviewActions('CONFIRMED', false)).toEqual({ canEdit: false, canConfirm: false, canSave: false }); expect(reviewActions('ERROR', false)).toEqual({ canEdit: false, canConfirm: false, canSave: false }); expect(reviewActions('ERROR', true).canSave).toBe(false); }); }); describe('statusBadge', () => { it('цвета', () => { expect(statusBadge('CONFIRMED')).toEqual({ label: 'Загружен', color: 'green' }); expect(statusBadge('NEEDS_CHECK')).toEqual({ label: 'Требуется проверка', color: 'orange' }); expect(statusBadge('ERROR')).toEqual({ label: 'Ошибка', color: 'red' }); }); }); describe('documentSubtitle', () => { it('имя · тип · дата', () => { expect(documentSubtitle({ original_name: 'a.pdf', file_type: 'PDF', uploaded_at: '2024-03-12T10:00:00Z' })).toBe( 'a.pdf · PDF · 12.03.2024', ); }); it('без даты и имени', () => { expect(documentSubtitle({ original_name: null, file_type: 'XLSX', uploaded_at: null })).toBe('XLSX'); }); }); describe('columnTitle', () => { const col = (label: string | null, period_date: string | null) => ({ id: 'c', column_index: 1, label, period_date, is_current: null }); it('подпись колонки, если распознана', () => { expect(columnTitle(col('На 31 декабря 2024 г.', null))).toBe('На 31 декабря 2024 г.'); }); it('пустая подпись — дата периода, затем номер', () => { expect(columnTitle(col(' ', '2024-12-31'))).toBe('На 31.12.2024'); expect(columnTitle(col(null, null))).toBe('Колонка 2'); }); });