import { describe, it, expect } from 'vitest'; import { mount } from '@vue/test-utils'; import RunCollectStatus from '../../resources/js/views/autopodbor/screens/RunCollectStatus.vue'; describe('RunCollectStatus — что видит клиент во время сбора', () => { it('в очереди — показывает номер места', () => { const w = mount(RunCollectStatus, { // eslint-disable-next-line @typescript-eslint/no-explicit-any props: { run: { status: 'queued', queue_position: 3, progress: null } as any }, }); expect(w.text()).toContain('№3'); expect(w.text().toLowerCase()).toContain('очеред'); }); it('идёт работа — показывает «этап N из M» и подпись этапа', () => { const w = mount(RunCollectStatus, { props: { // eslint-disable-next-line @typescript-eslint/no-explicit-any run: { status: 'running', queue_position: null, progress: { stage: 2, total: 4, label: 'Ищем фирмы в справочниках' } } as any, }, }); const t = w.text(); expect(t).toContain('2'); expect(t).toContain('4'); expect(t).toContain('Ищем фирмы в справочниках'); }); it('очередь важнее этапа: если есть и место, и этап — показываем место', () => { const w = mount(RunCollectStatus, { props: { // eslint-disable-next-line @typescript-eslint/no-explicit-any run: { status: 'queued', queue_position: 5, progress: { stage: 1, total: 4, label: 'что-то' } as any } as any, }, }); expect(w.text()).toContain('№5'); expect(w.text()).not.toContain('что-то'); }); it('нет данных (run=null) — ничего не показывает и не падает', () => { const w = mount(RunCollectStatus, { props: { run: null } }); expect(w.text().trim()).toBe(''); }); });