from job_research.apec.normalize import normalize_apec_listing def test_normalize_apec_listing_extracts_minimal_shape() -> None: html = """

Data Engineer F/H

Ref. Apec : 178554452W

Publiée le 20/04/2026 Actualisée le 02/06/2026

CLOUD TEMPLE

Salaire

A partir de 70 k€ brut annuel

Prise de poste

Dès que possible

Expérience

Minimum 7 ans

Descriptif du poste

Build pipelines

Profil recherché

Python / SQL

Compétences attendues

Ignored

Entreprise

Ignored

Ignored recruiter info
""" listing = normalize_apec_listing( url="https://example.test/job/123", html=html, fetched_at="2026-06-01T10:00:00Z", source_job_id="job-123", ) assert listing.source == "apec" assert listing.source_job_id == "job-123" assert listing.url == "https://example.test/job/123" assert listing.title == "Data Engineer F/H" assert listing.company == "CLOUD TEMPLE" assert listing.location == "Puteaux - 92" assert listing.contract_type == "CDI" assert listing.description_text == "Build pipelines" assert listing.published_at == "2026-04-20" assert listing.fetched_at == "2026-06-01T10:00:00Z" def test_normalize_apec_listing_uses_details_offer_list_company_fallback() -> None: html = """

Data Engineer F/H

Ref. Apec : 178554452W

Publiée le 20/04/2026 Actualisée le 02/06/2026

Salaire

A partir de 70 k€ brut annuel

Prise de poste

Dès que possible

Expérience

Minimum 7 ans

Descriptif du poste

Build pipelines

Profil recherché

Python / SQL

Compétences attendues

Ignored

Entreprise

Ignored

Ignored recruiter info
""" listing = normalize_apec_listing( url="https://example.test/job/123", html=html, fetched_at="2026-06-01T10:00:00Z", source_job_id=None, ) assert listing.company == "Fallback Company" assert listing.description_text == "Build pipelines"