ffc5da7543
Компонент RunCollectStatus: «вы в очереди №N» (пока прогон ждёт) или «этап N из M: подпись» (пока идёт). Встроен в оба окна сбора (конкуренты/источники) и экран загрузки ручного изучения. RunDto получил queue_position и progress. Никаких фейковых процентов — только реальные этапы движка. 4 теста Vitest. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
44 lines
2.1 KiB
TypeScript
44 lines
2.1 KiB
TypeScript
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('');
|
|
});
|
|
});
|