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")