You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
62 lines
2.3 KiB
Python
62 lines
2.3 KiB
Python
"""Tests for site manifest parsing and config merging."""
|
|
import pytest
|
|
from pathlib import Path
|
|
|
|
|
|
def test_indeed_manifest_loads():
|
|
"""indeed.yaml parses into SiteManifest without errors."""
|
|
from gimme_job.config import load_site_manifest
|
|
manifest = load_site_manifest("indeed")
|
|
assert manifest.site_id == "indeed"
|
|
assert manifest.enabled is True
|
|
assert manifest.identity.base_url == "https://www.indeed.com"
|
|
assert len(manifest.extract.container_selectors) > 0
|
|
|
|
|
|
def test_manifest_start_url_template():
|
|
"""build_start_url substitutes keyword correctly."""
|
|
from gimme_job.config import load_site_manifest
|
|
from gimme_job.models.dto import SearchQuery
|
|
manifest = load_site_manifest("indeed")
|
|
query = SearchQuery(keywords=["orthodontist"])
|
|
url = manifest.build_start_url(query)
|
|
assert "orthodontist" in url.lower()
|
|
|
|
|
|
def test_merge_query_global_defaults():
|
|
"""merge_query returns global defaults when no overrides."""
|
|
from gimme_job.config import load_global_config, load_site_manifest, merge_query
|
|
cfg = load_global_config()
|
|
manifest = load_site_manifest("indeed")
|
|
query = merge_query(cfg, manifest)
|
|
assert query.keywords == cfg.search_defaults.keywords
|
|
|
|
|
|
def test_merge_query_site_override():
|
|
"""Site search_override takes precedence over global defaults."""
|
|
from gimme_job.config import load_global_config, merge_query
|
|
from gimme_job.models.manifest import SiteManifest, SiteIdentity, SearchOverride
|
|
|
|
# Build a minimal manifest with keyword override
|
|
manifest = SiteManifest(
|
|
site_id="test",
|
|
identity=SiteIdentity(
|
|
label="Test",
|
|
base_url="https://test.com",
|
|
start_url_template="https://test.com/jobs?q={keywords_urlencoded}",
|
|
),
|
|
search_override=SearchOverride(keywords=["dentist"]),
|
|
)
|
|
cfg = load_global_config()
|
|
query = merge_query(cfg, manifest)
|
|
assert query.keywords == ["dentist"]
|
|
|
|
|
|
def test_merge_query_cli_override():
|
|
"""CLI override takes precedence over site and global."""
|
|
from gimme_job.config import load_global_config, load_site_manifest, merge_query
|
|
cfg = load_global_config()
|
|
manifest = load_site_manifest("indeed")
|
|
query = merge_query(cfg, manifest, cli_overrides={"keywords": ["pediatric dentist"]})
|
|
assert query.keywords == ["pediatric dentist"]
|