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:
@@ -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 }));
|
||||
|
||||
Reference in New Issue
Block a user