test(sheet): защита правки 0037 после 0051 (AURORA-1850)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
51b349299f
commit
f56e3e94c8
@ -0,0 +1,47 @@
|
||||
"""AURORA-1850: защита правки 0037 (LEAF-лимиты АХР и сопоставление num_group_id) после 0051.
|
||||
|
||||
Откат 0037 — нарушение корректности: тесты должны падать, если тело функций вернулось к виду до 0037.
|
||||
"""
|
||||
|
||||
import re
|
||||
from decimal import Decimal
|
||||
|
||||
import pytest
|
||||
|
||||
from test_upd_form_cells_full_rows import ( # noqa: F401 (фикстуры и хелперы)
|
||||
_get_sheet,
|
||||
_patch_cell,
|
||||
db_exec,
|
||||
headers,
|
||||
)
|
||||
|
||||
|
||||
def test_v_form2_view_keeps_0037_limit_formula(client, headers, db_exec):
|
||||
# LEAF «- принтеры», limit_template.id = 13, код 204620030 (0013_form2_limit.sql:1707)
|
||||
_patch_cell(client, headers, 4, "AHR_LIMIT", 13, "qty_q1", 4)
|
||||
row = next(r for r in _get_sheet(client, headers, 4, "AHR_LIMIT") if r["data"].get("id") == 13)
|
||||
assert Decimal(str(row["data"]["amount_q1"])) == Decimal(4) * Decimal("0.57") * 10900 / 4
|
||||
src = db_exec("SELECT pg_get_functiondef(CAST(:s AS regprocedure))",
|
||||
s="v3.v_form2_view(integer,character varying,text[],integer[])")[0][0]
|
||||
assert "_form2_ahr_limit_amount" in src
|
||||
|
||||
|
||||
OLD_DEPTH3_MATCHER = re.compile(r"ei\.depth\s*=\s*3\s+AND\s*\(") # вид до 0037
|
||||
|
||||
|
||||
def test_ahr_delta_keeps_0037_num_group_matching(client, headers, db_exec):
|
||||
found = db_exec(
|
||||
"""SELECT lt.id FROM v3.limit_template lt
|
||||
JOIN v3.expense_item ei ON ei.num_group_id = lt.expense_item_code
|
||||
AND ei.sheet = 'AHR' AND ei.direction = 'Support' AND ei.depth = 4
|
||||
WHERE lt.row_type = 'LEAF' ORDER BY lt.id LIMIT 1""")
|
||||
if not found:
|
||||
pytest.skip("нет LEAF шаблона с кодом = num_group_id статьи AHR глубины 4")
|
||||
lt_id = found[0][0]
|
||||
_patch_cell(client, headers, 4, "AHR_LIMIT", lt_id, "qty_q1", 4)
|
||||
delta = db_exec("SELECT row_type FROM v3.get_form2_ahr_satellite_delta(4, 'AHR_LIMIT', :i)", i=lt_id)
|
||||
assert any(r[0] == "INPUT" for r in delta), "дельта АХР пуста — откат сопоставления 0037"
|
||||
src = db_exec("SELECT pg_get_functiondef(CAST(:s AS regprocedure))",
|
||||
s="v3.get_form2_ahr_satellite_delta(integer,character varying,integer)")[0][0]
|
||||
assert "ei.num_group_id = lt.expense_item_code" in src
|
||||
assert not OLD_DEPTH3_MATCHER.search(src)
|
||||
Loading…
x
Reference in New Issue
Block a user