- test_osv_dkb.py: на каждом из 25 файлов пакета ДКБ — статусы листов по манифесту osv_dkb_expectations.yaml (данные, не if по имени файла), период по каталогу (2025-Q3, 2024-10_2025-09), структура строк, контракт, время разбора. - golden: osv-dkb/** до порога GOLDEN_MAX_BYTES = 1 МиБ (22 из 25 файлов; три файла Агрокомплекса 9–14 МБ — без снимков); golden_update, golden_helpers (подкаталог osv-dkb/), conftest (dkb_file, dkb_golden_file), хелперы. - dkb_helpers: expected_period, манифест; юнит-тесты без каталога fixtures. Stacked on #15. Closes #10 Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com> Claude-Session: cedd7915-2efe-41e5-988c-a9117033598b
36 lines
1.4 KiB
Python
36 lines
1.4 KiB
Python
"""Ожидания пакета ДКБ: период по каталогу и манифест нарушений (без каталога fixtures)."""
|
|
|
|
import pytest
|
|
from dkb_helpers import ExpectedPeriod, expected_period, expected_violations, load_expectations
|
|
|
|
|
|
@pytest.mark.parametrize(
|
|
("directory", "expected"),
|
|
[
|
|
("2025-Q3", ExpectedPeriod(2025, "Q3")),
|
|
("2024-Q1", ExpectedPeriod(2024, "Q1")),
|
|
("2024-10_2025-09", ExpectedPeriod(2025, None, rolling=True)),
|
|
],
|
|
)
|
|
def test_period_by_catalog_name(directory: str, expected: ExpectedPeriod) -> None:
|
|
assert expected_period(directory) == expected
|
|
|
|
|
|
@pytest.mark.parametrize("directory", ["2025", "2025-FY", "2025-09_2024-10", "x"])
|
|
def test_unknown_catalog_name_is_an_error(directory: str) -> None:
|
|
with pytest.raises(ValueError, match="каталога периода|конец периода"):
|
|
expected_period(directory)
|
|
|
|
|
|
def test_expectations_have_reasons_and_known_kinds() -> None:
|
|
kinds = {"total_row", "balance_identity", "parent_sum"}
|
|
for path, sheets in load_expectations().items():
|
|
assert sheets, path
|
|
for locator, found in sheets.items():
|
|
assert locator.startswith("sheet:"), (path, locator)
|
|
assert found and set(found) <= kinds, (path, locator, found)
|
|
|
|
|
|
def test_unlisted_sheet_is_expected_to_converge() -> None:
|
|
assert expected_violations("nm/2025-Q3/нет такого.xlsx", "sheet:60") == []
|