diff --git a/tests/test_basic.py b/tests/test_basic.py index a66c75b..ed176fc 100644 --- a/tests/test_basic.py +++ b/tests/test_basic.py @@ -127,6 +127,25 @@ def test_score_single_project_no_match(): assert score == 0, f"Expected 0 but got {score}" +def test_score_single_project_alias_matching(): + """Project skills should be alias-resolved so 'JS' in a project matches 'javascript' from the user.""" + project = { + "skills": ["JS"], + "level": "Beginner", + "interest": "Web", + "time": "Low" + } + score = score_single_project( + project, + user_skills=["javascript"], + level="Beginner", + interest="Web", + time_availability="Low" + ) + # 1 skill match (3) + level (2) + interest (2) + time (1) = 8 + assert score == 8, f"Expected 8 but got {score}" + + def test_get_recommendations_returns_results(): """Python + Beginner + Data + Low should always return at least one result.""" results = get_recommendations("Python", "Beginner", "Data", "Low") @@ -280,7 +299,8 @@ def test_download_code_found(): response = client.get("/project/1/download") assert response.status_code == 200 -def test_health_check(client): +def test_health_check(): + client = get_client() response = client.get("/health") assert response.status_code == 200 data = response.get_json() diff --git a/utils/recommender.py b/utils/recommender.py index 308c14f..ed41c0a 100644 --- a/utils/recommender.py +++ b/utils/recommender.py @@ -70,7 +70,7 @@ def score_single_project( score = 0 # Compare user's skills against the project's required skills - project_skills = [s.lower() for s in project.get("skills", [])] + project_skills = [SKILL_ALIASES.get(s.lower(), s.lower()) for s in project.get("skills", [])] # Count how many user skills overlap with the # skills required by the current project. matched_skills = sum(1 for skill in user_skills if skill in project_skills)