"""Tests for the employer scope gate (mission-driven employers only).""" from gimme_job.proactive.employer_scope import ( ACADEMIC, GOVERNMENT, MISSION, NONPROFIT, PRIVATE, PUBLIC_HEALTH, PUBLIC_TYPES, TRIBAL, UNKNOWN, classify_employer, read_employer_candidates, record_employer_candidate, ) from gimme_job.proactive.plan import ProactivePlan def _plan() -> ProactivePlan: plan = ProactivePlan() plan.verification.public_domains = ["myclinic.org"] plan.verification.employer_terms = {"tribal": ["cherokee nation"]} return plan def test_government_host_suffix(): assert classify_employer("https://www.ihs.gov/jobs/1", "Orthodontist")[0] == GOVERNMENT host_type, reason = classify_employer("https://careers.example.mil/job/1", "") assert host_type == GOVERNMENT and "host" in reason def test_academic_and_tribal_host_suffixes(): assert classify_employer("https://dentistry.utah.edu/job/1", "")[0] == ACADEMIC assert classify_employer("https://jobs.hopi-nsn.us/job/1", "")[0] == TRIBAL def test_public_domain_allowlist(): etype, reason = classify_employer( "https://careers.gilariver.org/jobs/123", "Orthodontist" ) assert etype == MISSION and "public domain" in reason assert classify_employer("https://www.governmentjobs.com/careers/az", "")[0] == MISSION def test_configured_public_domain_and_terms(): plan = _plan() assert classify_employer("https://jobs.myclinic.org/x", "", plan)[0] == MISSION etype, reason = classify_employer( "https://careers-cherokee.icims.com/jobs/1", "Orthodontist - Cherokee Nation", plan ) assert etype == TRIBAL and "cherokee nation" in reason def test_employer_keyword_types(): assert ( classify_employer("https://jobs.example.com/1", "Orthodontist - Cherokee Nation")[0] == TRIBAL ) assert ( classify_employer("https://jobs.example.com/2", "Navajo Area Indian Health Service")[0] == TRIBAL ) assert ( classify_employer("https://jobs.example.com/3", "State of Arizona Dentist")[0] == GOVERNMENT ) assert ( classify_employer("https://jobs.example.com/4", "University of Utah Health")[0] == ACADEMIC ) assert ( classify_employer("https://jobs.example.com/5", "Community Health Center Dentist")[0] == PUBLIC_HEALTH ) assert ( classify_employer("https://jobs.example.com/6", "Nonprofit clinic orthodontist")[0] == NONPROFIT ) def test_private_terms_win(): etype, reason = classify_employer( "https://jobs.example.com/1", "Orthodontist - Smile Doctors, a dental service organization", ) assert etype == PRIVATE and "dental service organization" in reason def test_unknown_is_default_deny(): etype, reason = classify_employer( "https://job-boards.greenhouse.io/specialtydentalbrands/jobs/1", "Job Application for Orthodontist at Specialty Dental Brands", ) assert etype == UNKNOWN assert etype not in PUBLIC_TYPES assert "no mission-driven" in reason def test_record_and_read_employer_candidates(): record_employer_candidate( "https://gh/j/1", PRIVATE, "dental service organization", title="Orthodontist" ) record_employer_candidate("https://gh/j/2", GOVERNMENT, "host", title="Orthodontist") entries = read_employer_candidates() assert len(entries) == 1 assert entries[0]["employer_type"] == PRIVATE