DFiP_Budget_planing/perf/tests/test_gen_plan.py
Andrey Epifancev fb80d8c636 perf: генератор данных через API
Refs #202

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-25 22:08:30 +04:00

35 lines
1.1 KiB
Python

import dataclasses
import pytest
from perfkit.gen.plan import GenPlan, plan_for_scale
def test_plan_scale2_doubles_volume():
p1, p2 = plan_for_scale(1), plan_for_scale(2)
for name in ("org_units_rf", "vsp_per_rf", "extra_lines_per_sheet", "projects_per_rf"):
assert getattr(p2, name) == 2 * getattr(p1, name), name
assert p2.fill_ratio == p1.fill_ratio
def test_plan_rejects_zero_scale():
with pytest.raises(ValueError):
plan_for_scale(0)
def test_plan_scale1_fields_and_biggest_sheet():
p = plan_for_scale(1)
assert {f.name for f in dataclasses.fields(GenPlan)} >= {
"org_units_ssp", "org_units_rf", "vsp_per_rf", "extra_lines_per_sheet",
"projects_per_rf", "fill_ratio",
}
# самый большой лист rf (FORM_2/AHR: 566 строк шаблона + extra) не меньше 1000 строк
assert 566 + p.extra_lines_per_sheet >= 1000
assert p.org_units_rf >= 1 and p.org_units_ssp >= 1
assert 0 < p.fill_ratio <= 1
def test_plan_rejects_negative_scale():
with pytest.raises(ValueError):
plan_for_scale(-1)