Follow-ups from #294: не исполнявшиеся тесты AURORA-1850/1906/1897/1887/1907 #296

Open
opened 2026-11-03 17:12:24 +03:00 by aep · 0 comments
Owner

Побочная находка при фиксе #294 (PR #295). Миграции 0050-0053 не накатывались с головы до головы НИ РАЗУ до 03.11.2026 (коллизия номеров revision, устранённая PR #292) — поэтому ничего из тестов на цепочки AURORA-1850/1906/1897/1887/1907 реально не исполнялось ни разу. После фикса #294 полный прогон (pytest --init_db) даёт 393 passed, 18 failed, 4 skipped. Все 18 падений ниже — не вызваны фиксом #294 (структурно подтверждено: PR #295 трогает только 0052/0053/0054, эти тесты падают по независимым причинам в коде/тестах других тикетов, которые раньше никто не мог прогнать).

Конфликт тестовых ожиданий AURORA-1850 vs AURORA-1897/1887 (нужно решение, какая версия правильная — скорее всего обновить тесты AURORA-1850, т.к. они защищают поведение, которое сами тикеты 1897/1887 намеренно меняют по жалобе заказчика)

  • test_upd_form_cells_subtree_0037_guard.py::test_v_form2_view_keeps_0037_limit_formula — защищает СТАРУЮ формулу принтеров (qty×0.57×10900/4, именной хардкод), которую AURORA-1897 намеренно заменяет на period-based расчёт без НДС. Тест защищает баг, о котором писал заказчик.
  • test_upd_form_cells_subtree_0037_guard.py::test_ahr_delta_keeps_0037_num_group_matching — ожидает INPUT-строку в дельте AHR_LIMIT; после AURORA-1887 такие строки на листе AHR скрыты (видим только заголовок).
  • test_upd_form_cells_subtree.py::test_ahr_delta_matches_get_after_rent_edit — то же для AHR_RENT: ожидает видимую INPUT-строку, которую AURORA-1887 прячет.

Реальный баг в get_form2_ahr_satellite_delta (0053, AURORA-1907) — не чинил, не моя область

  • test_upd_form_cells_subtree.py::test_ahr_delta_includes_sub_sub_item_for_depth4_limit — дельта пуста для статей глубины 4 (принтеры/МФУ/копиры). Причина: в target_lines CTE JOIN на v3.expense_item зашит ei.depth = 3 — статьи глубины 4 никогда не матчатся. Я добавил 'SUB_SUB_ITEM' в список row_type (PR #295, R-4) — это необходимо, но НЕ достаточно без снятия хардкода depth = 3.

Пре-существующий перф-долг в get_form2_ahr_satellite_delta — не моя область

  • test_upd_form_cells_subtree.py::test_jit_off_on_builders_and_edit_path — ожидает SET (jit=off) на функции, которого там нет.
  • test_upd_form_cells_subtree.py::test_edit_path_does_not_call_v_form_view[delta] — функция вызывает v3.v_form_view(form_id,'AHR',NULL,'Support') целиком вместо сфокусированного пути через _form_affected_rows.

Баг в тестах AURORA-1897/1906 — assumption про заголовочные строки и strip_nulls

  • test_form2_ahr_limit.py (6 тестов: test_annual_dms_limit_divided_by_four, test_quarterly_limit_uses_amount_without_vat, test_sim_card_without_vat_limit_backfilled_is_not_zero, test_printers_annual_limit_without_name_lookup, test_quarterly_norm_unchanged_other_than_vat_source, test_rent_plan_still_passed_through_without_division) — читают data["plan"]["q1"] у заголовочной строки (ITEM/SUB_ITEM). У заголовков v3.v_form2_sheet_sections не считает поквартальные col_plan_q1..q4 (только col_plan_year), а GET-эндпоинт листа вызывает strip_nulls=True (src/api/v1/forms.py:182) — ключ q1 со значением NULL вырезается целиком, а не остаётся null. Нужно починить тест (сравнивать plan.year), а не функцию.
  • test_form2_ahr_satellite_spod_integration.py (3 теста, AHR_RENT/UTILITY/SECURITY) — то же: читают row["data"]["fact_q4"]["oct"] у свежесозданной строки без данных; strip_nulls=True вырезает NULL-поля целиком.

Не связано ни с чем выше

  • test_db_functions_integration.py::test_backend_calls_form3_add_project_and_add_line_functions — FORM_3, не трогалось.
  • test_export_service_query_params.py::test_export_full_form_ignores_non_applicable_params_for_other_sheets, ::test_export_form_payload_forwards_ignore_flag — TypeError: ExportService.export_form_payload() got an unexpected keyword argument 'ignore_non_applicable_query_params' — рассинхрон теста и сигнатуры сервиса, SQL не касается.
Побочная находка при фиксе #294 (PR #295). Миграции 0050-0053 не накатывались с головы до головы НИ РАЗУ до 03.11.2026 (коллизия номеров revision, устранённая PR #292) — поэтому ничего из тестов на цепочки AURORA-1850/1906/1897/1887/1907 реально не исполнялось ни разу. После фикса #294 полный прогон (`pytest --init_db`) даёт `393 passed, 18 failed, 4 skipped`. Все 18 падений ниже — не вызваны фиксом #294 (структурно подтверждено: PR #295 трогает только 0052/0053/0054, эти тесты падают по независимым причинам в коде/тестах других тикетов, которые раньше никто не мог прогнать). ## Конфликт тестовых ожиданий AURORA-1850 vs AURORA-1897/1887 (нужно решение, какая версия правильная — скорее всего обновить тесты AURORA-1850, т.к. они защищают поведение, которое сами тикеты 1897/1887 намеренно меняют по жалобе заказчика) - `test_upd_form_cells_subtree_0037_guard.py::test_v_form2_view_keeps_0037_limit_formula` — защищает СТАРУЮ формулу принтеров (`qty×0.57×10900/4`, именной хардкод), которую AURORA-1897 намеренно заменяет на period-based расчёт без НДС. Тест защищает баг, о котором писал заказчик. - `test_upd_form_cells_subtree_0037_guard.py::test_ahr_delta_keeps_0037_num_group_matching` — ожидает INPUT-строку в дельте AHR_LIMIT; после AURORA-1887 такие строки на листе AHR скрыты (видим только заголовок). - `test_upd_form_cells_subtree.py::test_ahr_delta_matches_get_after_rent_edit` — то же для AHR_RENT: ожидает видимую INPUT-строку, которую AURORA-1887 прячет. ## Реальный баг в get_form2_ahr_satellite_delta (0053, AURORA-1907) — не чинил, не моя область - `test_upd_form_cells_subtree.py::test_ahr_delta_includes_sub_sub_item_for_depth4_limit` — дельта пуста для статей глубины 4 (принтеры/МФУ/копиры). Причина: в `target_lines` CTE JOIN на `v3.expense_item` зашит `ei.depth = 3` — статьи глубины 4 никогда не матчатся. Я добавил `'SUB_SUB_ITEM'` в список row_type (PR #295, R-4) — это необходимо, но НЕ достаточно без снятия хардкода `depth = 3`. ## Пре-существующий перф-долг в get_form2_ahr_satellite_delta — не моя область - `test_upd_form_cells_subtree.py::test_jit_off_on_builders_and_edit_path` — ожидает `SET (jit=off)` на функции, которого там нет. - `test_upd_form_cells_subtree.py::test_edit_path_does_not_call_v_form_view[delta]` — функция вызывает `v3.v_form_view(form_id,'AHR',NULL,'Support')` целиком вместо сфокусированного пути через `_form_affected_rows`. ## Баг в тестах AURORA-1897/1906 — assumption про заголовочные строки и strip_nulls - `test_form2_ahr_limit.py` (6 тестов: `test_annual_dms_limit_divided_by_four`, `test_quarterly_limit_uses_amount_without_vat`, `test_sim_card_without_vat_limit_backfilled_is_not_zero`, `test_printers_annual_limit_without_name_lookup`, `test_quarterly_norm_unchanged_other_than_vat_source`, `test_rent_plan_still_passed_through_without_division`) — читают `data["plan"]["q1"]` у заголовочной строки (ITEM/SUB_ITEM). У заголовков `v3.v_form2_sheet_sections` не считает поквартальные `col_plan_q1..q4` (только `col_plan_year`), а GET-эндпоинт листа вызывает `strip_nulls=True` (`src/api/v1/forms.py:182`) — ключ `q1` со значением NULL вырезается целиком, а не остаётся `null`. Нужно починить тест (сравнивать `plan.year`), а не функцию. - `test_form2_ahr_satellite_spod_integration.py` (3 теста, AHR_RENT/UTILITY/SECURITY) — то же: читают `row["data"]["fact_q4"]["oct"]` у свежесозданной строки без данных; `strip_nulls=True` вырезает NULL-поля целиком. ## Не связано ни с чем выше - `test_db_functions_integration.py::test_backend_calls_form3_add_project_and_add_line_functions` — FORM_3, не трогалось. - `test_export_service_query_params.py::test_export_full_form_ignores_non_applicable_params_for_other_sheets`, `::test_export_form_payload_forwards_ignore_flag` — `TypeError: ExportService.export_form_payload() got an unexpected keyword argument 'ignore_non_applicable_query_params'` — рассинхрон теста и сигнатуры сервиса, SQL не касается.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: RSHB/DFiP_Budget_planing#296
No description provided.