ai-interview-mentor / tests /test_routing.py
adeshboudh16
updated ui, docs, tests
47203d3
"""Unit tests for route_after_evaluation — no LLM, no DB needed."""
from backend.graph.nodes import route_after_evaluation
def _state(**overrides) -> dict:
"""Build a minimal InterviewState dict for routing tests."""
base = {
"last_verdict": "strong",
"turn_count": 1,
"questions_remaining": [{"question_text": "Q2", "difficulty": "easy"}],
"awaiting_counter_response": False,
}
base.update(overrides)
return base
def test_shallow_not_in_counter_loop_routes_to_counter():
state = _state(last_verdict="shallow", awaiting_counter_response=False)
assert route_after_evaluation(state) == "counter"
def test_shallow_already_in_counter_loop_routes_to_next_question():
state = _state(last_verdict="shallow", awaiting_counter_response=True, turn_count=2)
assert route_after_evaluation(state) == "next_question"
def test_strong_routes_to_next_question():
state = _state(last_verdict="strong", turn_count=1)
assert route_after_evaluation(state) == "next_question"
def test_wrong_routes_to_next_question():
state = _state(last_verdict="wrong", turn_count=1)
assert route_after_evaluation(state) == "next_question"
def test_turn_count_8_routes_to_end():
state = _state(last_verdict="strong", turn_count=8)
assert route_after_evaluation(state) == "end"
def test_no_questions_remaining_routes_to_end():
state = _state(last_verdict="strong", turn_count=3, questions_remaining=[])
assert route_after_evaluation(state) == "end"
def test_every_4_turns_routes_to_summarize():
state = _state(last_verdict="strong", turn_count=4)
assert route_after_evaluation(state) == "summarize"
def test_turn_8_beats_summarize():
# turn_count=8 should end, not summarize (end takes priority)
state = _state(last_verdict="strong", turn_count=8)
assert route_after_evaluation(state) == "end"