75 lines
2.5 KiB
Python
75 lines
2.5 KiB
Python
import pytest
|
|
|
|
from apps.jobs.models import JobPosting
|
|
from apps.jobs.services.relevance import (
|
|
assess_it_relevance,
|
|
it_relevance_query,
|
|
profile_requires_it_focus,
|
|
)
|
|
|
|
|
|
def test_title_led_it_relevance_accepts_clear_it_roles():
|
|
for title in (
|
|
"Modern Workplace Engineer",
|
|
"Product owner ICT (100%)",
|
|
"Functioneel Analist",
|
|
"Senior .Net Developer",
|
|
"Senior Mobile Developer",
|
|
"Deeltijds docent informatica, networking & security",
|
|
):
|
|
assessment = assess_it_relevance(title)
|
|
assert assessment.relevant, title
|
|
assert assessment.signals
|
|
|
|
|
|
def test_title_led_it_relevance_rejects_non_it_and_ambiguous_roles():
|
|
for title in (
|
|
"Technieker Facilitaire Diensten",
|
|
"Spontane sollicitatie - logopedist",
|
|
"Doctoraatsbursaal trombo-inflammatie bij hemodialyse",
|
|
"Stafmedewerker Onderwijs faculteit Rechten",
|
|
"Project Manager",
|
|
"Business Developer",
|
|
"IT Recruitment Specialist",
|
|
):
|
|
assessment = assess_it_relevance(title)
|
|
assert not assessment.relevant, title
|
|
assert assessment.reason
|
|
|
|
|
|
def test_ambiguous_field_role_requires_strong_it_context():
|
|
accepted = assess_it_relevance(
|
|
"Field Service Engineer",
|
|
"Installatie van Microsoft 365, Windows Server en netwerkswitches bij klanten.",
|
|
)
|
|
rejected = assess_it_relevance(
|
|
"Field Service Engineer",
|
|
"Onderhoud en herstelling van industriële HVAC- en koelinstallaties.",
|
|
)
|
|
|
|
assert accepted.relevant
|
|
assert "vacaturetekst" in accepted.reason
|
|
assert not rejected.relevant
|
|
assert "Ambigue technische functietitel" in rejected.reason
|
|
|
|
|
|
@pytest.mark.django_db
|
|
def test_database_it_query_matches_contextual_assessment(job):
|
|
job.original_title = "Field Service Engineer"
|
|
job.description_text = "Implementeer Intune, Windows Server en VPN-oplossingen bij klanten."
|
|
job.save(update_fields=["original_title", "description_text"])
|
|
assert JobPosting.objects.filter(it_relevance_query(), pk=job.pk).exists()
|
|
|
|
job.description_text = "Onderhoud industriële pompen en productielijnen."
|
|
job.save(update_fields=["description_text"])
|
|
assert not JobPosting.objects.filter(it_relevance_query(), pk=job.pk).exists()
|
|
|
|
|
|
def test_active_it_profile_requires_deterministic_it_focus(profile):
|
|
assert profile_requires_it_focus(profile)
|
|
|
|
profile.name = "Algemeen profiel"
|
|
profile.desired_titles = ["verpleegkundige"]
|
|
profile.desired_skills = []
|
|
assert not profile_requires_it_focus(profile)
|