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)