generated from coulomb/repo-seed
search and inspection polish
This commit is contained in:
@@ -96,6 +96,47 @@ def test_search_matches_approved_abilities_and_capabilities(tmp_path):
|
||||
assert capabilities[0].name == "Classify Incoming Email"
|
||||
|
||||
|
||||
def test_search_matches_features_and_evidence_with_context(tmp_path):
|
||||
service = make_service(tmp_path)
|
||||
repository = service.register_repository(
|
||||
name="MailRouter",
|
||||
url="https://example.com/mail-router-feature.git",
|
||||
description="Manual test repository.",
|
||||
)
|
||||
ability_id = service.add_ability(repository.id, name="Business Email Routing")
|
||||
capability_id = service.add_capability(
|
||||
repository.id,
|
||||
ability_id,
|
||||
name="Classify Incoming Email",
|
||||
)
|
||||
service.add_feature(
|
||||
repository.id,
|
||||
capability_id,
|
||||
name="POST /api/classify-email",
|
||||
type="REST endpoint",
|
||||
location="src/routes/classify_email.py",
|
||||
)
|
||||
service.add_evidence(
|
||||
repository.id,
|
||||
capability_id,
|
||||
type="unit_test",
|
||||
reference="tests/test_email_classification.py",
|
||||
strength="strong",
|
||||
)
|
||||
|
||||
feature_results = service.search("classify_email")
|
||||
evidence_results = service.search("unit_test")
|
||||
|
||||
assert feature_results[0].match_type == "feature"
|
||||
assert feature_results[0].matched_field == "location"
|
||||
assert feature_results[0].ability_name == "Business Email Routing"
|
||||
assert feature_results[0].capability_name == "Classify Incoming Email"
|
||||
assert feature_results[0].source_reference == "src/routes/classify_email.py"
|
||||
assert evidence_results[0].match_type == "evidence"
|
||||
assert evidence_results[0].evidence_level == "strong"
|
||||
assert evidence_results[0].confidence == 0.9
|
||||
|
||||
|
||||
def test_register_repository_imports_metadata_when_name_is_omitted(tmp_path):
|
||||
source = tmp_path / "metadata-source"
|
||||
source.mkdir()
|
||||
|
||||
@@ -211,6 +211,7 @@ def test_api_analysis_run_loop(tmp_path):
|
||||
search_response = client.get("/search", params={"q": "frontend"})
|
||||
assert search_response.status_code == 200
|
||||
assert search_response.json()
|
||||
assert "matched_field" in search_response.json()[0]
|
||||
|
||||
abilities_response = client.get("/abilities")
|
||||
assert abilities_response.status_code == 200
|
||||
@@ -303,6 +304,7 @@ def test_ui_register_analyze_and_approve_loop(tmp_path):
|
||||
search_response = client.get("/ui/search", params={"q": "repository"})
|
||||
assert search_response.status_code == 200
|
||||
assert "UI Repo" in search_response.text
|
||||
assert "Field" in search_response.text
|
||||
finally:
|
||||
app.dependency_overrides.clear()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user