38 lines
1.3 KiB
Python
38 lines
1.3 KiB
Python
"""Unit tests for ECP classification adapter covering scenarios ECP-001 to ECP-009."""
|
|
|
|
from src.runtime.ecp.adapter import ECPClassificationAdapter
|
|
|
|
|
|
def test_ecp_adapter_direct_inherent():
|
|
adapter = ECPClassificationAdapter()
|
|
sample_ecp = {
|
|
"target_entity_id": "Q12345",
|
|
"target_name": "Club Atlético River Plate",
|
|
"aliases": ["River Plate", "River"],
|
|
"domain": "sports",
|
|
"anchors": ["Monumental", "Buenos Aires"],
|
|
}
|
|
content = "# River vs Santa Fe\n\nRiver Plate jugó un gran partido en el estadio Monumental de Buenos Aires."
|
|
res = adapter.classify(sample_ecp, content)
|
|
|
|
assert res["category"] == "DIRECT_INHERENT"
|
|
assert res["is_inherent"] is True
|
|
assert res["confidence"] > 0.8
|
|
assert len(res["evidences"]) > 0
|
|
|
|
|
|
def test_ecp_adapter_not_related():
|
|
adapter = ECPClassificationAdapter()
|
|
sample_ecp = {
|
|
"target_entity_id": "Q12345",
|
|
"target_name": "Club Atlético River Plate",
|
|
"aliases": ["River Plate"],
|
|
"domain": "sports",
|
|
"anchors": ["Monumental"],
|
|
}
|
|
content = "# Gastronomia Francesa\n\nReceita de croissant e baguetes na culinária tradicional de Paris."
|
|
res = adapter.classify(sample_ecp, content)
|
|
|
|
assert res["category"] == "NOT_RELATED"
|
|
assert res["is_inherent"] is False
|