repo-manager/tests/test_classification.py

39 lines
1.2 KiB
Python
Raw Normal View History

from __future__ import annotations
from pathlib import Path
import pytest
from repo_manager.classification import ClassificationError, validate_classification
from repo_manager.observe import load_classification
def test_classification_contract_accepts_canon_values() -> None:
assert not validate_classification(
{
"category": "tooling",
"domain": "infotech",
"secondary_domains": ["agents"],
"capability_tags": ["repository-control"],
"business_stake": ["technology"],
"business_mechanics": ["control"],
}
)
def test_load_classification_rejects_invalid_authority(tmp_path: Path) -> None:
(tmp_path / ".repo-classification.yaml").write_text(
"repo_classification:\n"
" category: health\n"
" domain: infotech\n"
" secondary_domains: [infotech, nowhere]\n"
" capability_tags: [Bad_Tag]\n",
encoding="utf-8",
)
with pytest.raises(ClassificationError) as raised:
load_classification(tmp_path)
message = str(raised.value)
assert "category" in message
assert "secondary_domains" in message
assert "capability_tags" in message