job-research/tests/apec/test_query_derivation.py

76 lines
2.1 KiB
Python

from job_research.apec.adapter import ApecSearchFilters
from job_research.apec.query_derivation import derive_apec_queries, derive_apec_search_filters
from job_research.models import CandidateProfileOutput
def test_derive_apec_queries_preserves_order_dedupes_and_caps_at_five() -> None:
profile = CandidateProfileOutput(
target_roles=[
"Data Engineer",
"Analytics Engineer",
"Data Engineer",
"BI Engineer",
"Junior Data Platform Engineer",
"ML Engineer",
"Backend Engineer",
],
strengths=["Python", "SQL"],
skills_to_emphasize=["BigQuery", "Terraform"],
)
queries = derive_apec_queries(profile)
assert queries == [
"Data Engineer",
"Analytics Engineer",
"BI Engineer",
"Junior Data Platform Engineer",
"ML Engineer",
]
def test_derive_apec_queries_uses_up_to_five_target_roles_when_no_support_terms_exist() -> None:
profile = CandidateProfileOutput(
target_roles=[
"Data Engineer",
"Analytics Engineer",
"BI Engineer",
"Junior Data Platform Engineer",
"ML Engineer",
"Backend Engineer",
]
)
queries = derive_apec_queries(profile)
assert queries == [
"Data Engineer",
"Analytics Engineer",
"BI Engineer",
"Junior Data Platform Engineer",
"ML Engineer",
]
def test_derive_apec_queries_uses_support_terms_without_constraints() -> None:
profile = CandidateProfileOutput(
target_roles=["Data Engineer"],
strengths=["Python"],
skills_to_emphasize=["BigQuery"],
constraints=["CDI only", "France only"],
)
queries = derive_apec_queries(profile)
assert queries == [
"Data Engineer",
"Data Engineer Python",
"Data Engineer BigQuery",
]
def test_derive_apec_search_filters_from_constraints() -> None:
profile = CandidateProfileOutput(constraints=["CDI only", "France only"])
assert derive_apec_search_filters(profile) == ApecSearchFilters(location="France", contract_type="CDI")