diff --git a/app/source_catalog.py b/app/source_catalog.py index f74adca..c495a70 100644 --- a/app/source_catalog.py +++ b/app/source_catalog.py @@ -24,14 +24,6 @@ "mode": "experimental", "description": "Experimental provider for public Kleinanzeigen job listings. Uses conservative limits, optional detail enrichment, no CAPTCHA/proxy bypass, and fails safely if blocking or layout changes are detected.", }, - { - "key": "linkedin", - "name": "LinkedIn Jobs", - "source_type": "search_link", - "mode": "search-only", - "description": "Open a targeted LinkedIn Jobs search. No scraping is performed by the stable JobTrack providers.", - "url_template": "https://www.linkedin.com/jobs/search/?keywords={query}&location={location}", - }, { "key": "indeed", "name": "Indeed Germany", @@ -48,37 +40,13 @@ "description": "Open the equivalent StepStone search in a new tab. Recommended as a fallback when the experimental provider is blocked or StepStone changes its page layout.", "url_template": "https://www.stepstone.de/jobs/{query_slug}/in-{location_slug}", }, - { - "key": "google", - "name": "Google Jobs Search", - "source_type": "search_link", - "mode": "search-only", - "description": "Open Google job-oriented search results. Google Cloud Talent Solution is not a public Google Jobs feed.", - "url_template": "https://www.google.com/search?q={query}+jobs+{location}", - }, - { - "key": "glassdoor", - "name": "Glassdoor", - "source_type": "search_link", - "mode": "search-only", - "description": "Open a targeted Glassdoor search; no automated scraping in the stable provider layer.", - "url_template": "https://www.google.com/search?q=site%3Aglassdoor.de+{query}+{location}", - }, - { - "key": "talent", - "name": "Talent.com", - "source_type": "search_link", - "mode": "search-only", - "description": "Open a targeted Talent.com search; no automated scraping.", - "url_template": "https://de.talent.com/jobs?k={query}&l={location}", - }, { "key": "arbeitsagentur", "name": "Bundesagentur für Arbeit", "source_type": "search_link", "mode": "search-only", "description": "Open Bundesagentur Jobsuche in a new tab. Can later be replaced by an approved API integration.", - "url_template": "https://www.arbeitsagentur.de/jobsuche/suche?angebotsart=1&was={query}&wo={location}", + "url_template": "https://www.arbeitsagentur.de/jobsuche/suche?suchbereich=jobs&was={query}&wo={location}", }, { "key": "jooble", diff --git a/tests/test_source_catalog.py b/tests/test_source_catalog.py index 587d196..5e870e6 100644 --- a/tests/test_source_catalog.py +++ b/tests/test_source_catalog.py @@ -4,12 +4,8 @@ def test_catalog_contains_requested_platforms(): keys = {x["key"] for x in SOURCE_CATALOG} expected = { - "linkedin", "indeed", "stepstone", - "google", - "glassdoor", - "talent", "arbeitsagentur", "jooble", "greenhouse", @@ -20,6 +16,19 @@ def test_catalog_contains_requested_platforms(): assert expected.issubset(keys) +def test_catalog_only_keeps_useful_manual_search_shortcuts(): + manual_keys = {x["key"] for x in SOURCE_CATALOG if x["mode"] == "search-only"} + assert manual_keys == {"indeed", "stepstone-search", "arbeitsagentur"} + + +def test_arbeitsagentur_uses_current_jobs_search_parameters(): + source = next(x for x in SOURCE_CATALOG if x["key"] == "arbeitsagentur") + url = render_search_url(source["url_template"], "quality engineer", "Berlin") + assert "suchbereich=jobs" in url + assert "was=quality+engineer" in url + assert "wo=Berlin" in url + + def test_search_url_is_encoded(): url = render_search_url( "https://example.com?q={query}&l={location}",