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
- CLOUD TEMPLE
- 1 CDI
- Puteaux - 92
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
- Fallback Company
- 1 CDI
- Puteaux - 92
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"