shl-recommender / tests /test_replies.py
Eshit's picture
HF Space deploy snapshot
5733f37
Raw
History Blame Contribute Delete
2.21 kB
"""Tests for app.replies: templated shortlist reply + COMPARE framing."""
from __future__ import annotations
from app.replies import compare_reply, shortlist_reply
ITEMS = [
{"name": "Core Java (Advanced Level) (New)", "url": "u1", "test_type": "K"},
{"name": "OPQ32r", "url": "u2", "test_type": "P"},
]
def test_shortlist_reply_states_count_and_role():
reply = shortlist_reply(
{"role": "Java developer", "seniority": "mid-level", "skills": ["Java", "SQL"]},
ITEMS,
)
assert "2 assessments" in reply
assert "mid-level Java developer" in reply
assert "Java" in reply and "SQL" in reply
def test_shortlist_reply_singular():
reply = shortlist_reply({"role": "analyst"}, ITEMS[:1])
assert "1 assessment" in reply
assert "assessments" not in reply.split("These")[0]
def test_shortlist_reply_handles_missing_constraints():
reply = shortlist_reply({}, ITEMS)
assert "2 assessments" in reply
assert reply.strip()
def test_shortlist_reply_falls_back_to_skills_when_no_role():
reply = shortlist_reply({"skills": ["Python"]}, ITEMS)
assert reply.strip()
assert "Python" in reply
def test_shortlist_reply_accepts_none_constraints():
reply = shortlist_reply(None, ITEMS)
assert "2 assessments" in reply
def test_shortlist_reply_dedupes_seniority_in_role():
# seniority "graduate" already part of role "graduate trainee" -> no doubling.
reply = shortlist_reply({"role": "graduate trainee", "seniority": "graduate"}, ITEMS)
assert "graduate graduate" not in reply
assert "graduate trainee" in reply
def test_compare_reply_uses_llm_text():
assert compare_reply(ITEMS, "OPQ measures personality; Java measures skill.") == (
"OPQ measures personality; Java measures skill."
)
def test_compare_reply_fallback_names_items():
reply = compare_reply(ITEMS, "")
assert "Core Java (Advanced Level) (New)" in reply and "OPQ32r" in reply
def test_compare_reply_fallback_single_item():
reply = compare_reply(ITEMS[:1], " ")
assert "OPQ32r" not in reply
assert "Core Java" in reply
def test_compare_reply_fallback_no_items():
assert compare_reply([], None).strip()