"""Ожидания пакета ДКБ: период по каталогу и манифест нарушений (без каталога 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") == []