test(autopodbor): актуализировать 4 устаревших фронт-теста создания проектов

Групповое и одиночное создание теперь ТРЕБУЮТ регион (vsyaRf=false по умолчанию;
«Вся РФ» — явная галочка, дефолта больше нет — подтверждено владельцем). Тесты
были под старый дефолт «Вся РФ» → doCreate бэйлился на гейте региона. Добавлен
явный выбор «Вся РФ» перед doCreate. Плюс requisites_required теперь открывает
форму реквизитов (reqGate), а не тост — тест переведён на новое поведение,
reqGate добавлен в defineExpose для наблюдаемости. Спек 6/6 зелёный.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Дмитрий
2026-07-06 15:51:45 +03:00
parent a2729cee95
commit efbad075e8
2 changed files with 11 additions and 5 deletions
@@ -758,7 +758,7 @@ onMounted(async () => {
}
});
defineExpose({ ctab, selected, inWork, props: props, toast, create, switchTab, toggle, openEdit, openCollect, openAdd, openCreate, openBulkCreate, doCreate, toggleProject, bulkWork, bulkMoveToWork, askBulkDeleteProps, bulkDeleteProps, delBulk, openDelete, del, delPool, confirmDeletePool, moveToWork, sourceValue });
defineExpose({ ctab, selected, inWork, props: props, toast, create, reqGate, switchTab, toggle, openEdit, openCollect, openAdd, openCreate, openBulkCreate, doCreate, toggleProject, bulkWork, bulkMoveToWork, askBulkDeleteProps, bulkDeleteProps, delBulk, openDelete, del, delPool, confirmDeletePool, moveToWork, sourceValue });
</script>
<template>
@@ -71,23 +71,26 @@ describe('FieldCompetitorScreen — создание проекта из ист
// eslint-disable-next-line @typescript-eslint/no-explicit-any
const vm = wrapper.vm as any;
vm.openCreate(vm.inWork[0]);
vm.create.vsyaRf = true; // регион обязателен: отмечаем «Вся РФ», иначе doCreate не пустит (гейт региона)
await wrapper.vm.$nextTick();
await vm.doCreate(false);
expect(api.createProjects).toHaveBeenLastCalledWith(expect.objectContaining({ launch: false }));
vm.openCreate(vm.inWork[0]);
vm.create.vsyaRf = true;
await wrapper.vm.$nextTick();
await vm.doCreate(true);
expect(api.createProjects).toHaveBeenLastCalledWith(expect.objectContaining({ launch: true }));
});
it('Баг 3: по умолчанию (Вся РФ) шлёт regions: []', async () => {
it('Баг 3: отмечена «Вся РФ» → шлёт regions: []', async () => {
(api.createProjects as ReturnType<typeof vi.fn>).mockResolvedValue({ data: [{ id: 1, name: 'p' }], launch: null });
const wrapper = await mountLoaded();
// eslint-disable-next-line @typescript-eslint/no-explicit-any
const vm = wrapper.vm as any;
vm.openCreate(vm.inWork[0]);
vm.create.vsyaRf = true; // «Вся РФ» — явный выбор (дефолта «Вся РФ» больше нет, регион обязателен)
await wrapper.vm.$nextTick();
await vm.doCreate(true);
expect(api.createProjects).toHaveBeenLastCalledWith(expect.objectContaining({ regions: [] }));
@@ -120,16 +123,18 @@ describe('FieldCompetitorScreen — создание проекта из ист
expect(String(vm.toast).toLowerCase()).toContain('регион');
});
it('Баг 5a: ошибка requisites_required → адресный тост про реквизиты, не «баланс»', async () => {
it('Баг 5a: ошибка requisites_required → открывается форма реквизитов, не общая ошибка/баланс', async () => {
(api.createProjects as ReturnType<typeof vi.fn>).mockRejectedValue(axErr(422, { error: 'requisites_required' }));
const wrapper = await mountLoaded();
// eslint-disable-next-line @typescript-eslint/no-explicit-any
const vm = wrapper.vm as any;
vm.openCreate(vm.inWork[0]);
vm.create.vsyaRf = true; // регион обязателен: «Вся РФ», чтобы дойти до API (там мок requisites_required)
await wrapper.vm.$nextTick();
await vm.doCreate(true);
expect(String(vm.toast).toLowerCase()).toContain('реквизит');
expect(String(vm.toast).toLowerCase()).not.toContain('баланс');
// Новое поведение: вместо общей ошибки/тоста «баланс» открывается адресная форма реквизитов (reqGate).
expect(vm.reqGate.open).toBe(true);
expect(String(vm.create.note).toLowerCase()).not.toContain('баланс');
});
it('групповое создание: doCreate шлёт source_ids всех выбранных источников без проекта', async () => {
@@ -148,6 +153,7 @@ describe('FieldCompetitorScreen — создание проекта из ист
const vm = wrapper.vm as any;
vm.selected = [1, 2];
vm.openBulkCreate();
vm.create.vsyaRf = true; // регион обязателен и в групповом: отмечаем «Вся РФ»
await wrapper.vm.$nextTick();
await vm.doCreate(true);
expect(api.createProjects).toHaveBeenLastCalledWith(expect.objectContaining({ source_ids: [1, 2], launch: true }));