import { describe, it, expect, beforeEach, vi } from 'vitest'; import { mount } from '@vue/test-utils'; import { createPinia, setActivePinia } from 'pinia'; import { createVuetify } from 'vuetify'; vi.mock('../../resources/js/api/autopodbor'); import * as api from '../../resources/js/api/autopodbor'; import AutopodborView from '../../resources/js/views/autopodbor/AutopodborView.vue'; const vuetify = createVuetify(); function mountView() { return mount(AutopodborView, { global: { plugins: [vuetify] } }); } describe('AutopodborView', () => { beforeEach(() => { setActivePinia(createPinia()); vi.clearAllMocks(); (api.fetchState as any).mockResolvedValue({ enabled: true, prices: { search: '500', study: '300' }, runs: [] }); (api.fetchField as any).mockResolvedValue([]); }); it('по умолчанию показывает рабочее место «Конкурентное поле»', async () => { const w = mountView(); await new Promise((r) => setTimeout(r, 0)); expect(w.text()).toContain('Конкурентное поле'); expect(w.text()).toContain('Собрать конкурентов'); }); it('«Собрать конкурентов для меня» открывает окно сбора', async () => { const w = mountView(); await new Promise((r) => setTimeout(r, 0)); const btn = w.findAll('button').find((b) => b.text().includes('Собрать конкурентов для меня')); expect(btn).toBeTruthy(); await btn!.trigger('click'); // открылось модальное окно сбора с правилами заполнения expect(w.text()).toContain('Как заполнить, чтобы результат был точным'); }); });