import { describe, it, expect, vi, beforeEach } from 'vitest'; import { mount, flushPromises } from '@vue/test-utils'; import { createPinia, setActivePinia } from 'pinia'; import { createRouter, createMemoryHistory } from 'vue-router'; vi.mock('../../resources/js/stores/autopodborStore', () => ({ useAutopodborStore: () => ({ loadState: vi.fn().mockResolvedValue(undefined) }), })); import AutopodborView from '../../resources/js/views/autopodbor/AutopodborView.vue'; async function mountWithQuery(query: Record) { const router = createRouter({ history: createMemoryHistory(), routes: [{ path: '/autopodbor', name: 'autopodbor', component: { template: '
' } }], }); await router.push({ path: '/autopodbor', query }); await router.isReady(); return mount(AutopodborView, { global: { plugins: [router], stubs: { FieldWorkspaceScreen: { template: '
field
' }, FieldCompetitorScreen: { template: '
competitor screen
' }, EditProjectScreen: true, FieldProposalsScreen: true, EntryScreen: true, AutoFormScreen: true, ManualFormScreen: true, LoadingScreen: true, ListScreen: true, DetailScreen: true, CreateScreen: true, DoneScreen: true, }, }, }); } describe('AutopodborView deep-link (?competitor=&project=)', () => { beforeEach(() => setActivePinia(createPinia())); it('query competitor → экран конкурента с ctx.competitorId', async () => { const w = await mountWithQuery({ competitor: '3' }); await flushPromises(); expect((w.vm as any).screen).toBe('fieldcompetitor'); expect((w.vm as any).ctx.competitorId).toBe(3); }); it('query competitor+project → выставлен ctx.openProjectSettingsId', async () => { const w = await mountWithQuery({ competitor: '3', project: '5' }); await flushPromises(); expect((w.vm as any).ctx.openProjectSettingsId).toBe(5); }); it('без query — дефолтный экран field', async () => { const w = await mountWithQuery({}); await flushPromises(); expect((w.vm as any).screen).toBe('field'); expect((w.vm as any).ctx.competitorId).toBeNull(); }); it('невалидный competitor — остаёмся на field', async () => { const w = await mountWithQuery({ competitor: 'abc' }); await flushPromises(); expect((w.vm as any).screen).toBe('field'); }); });