58 lines
1.5 KiB
Python
58 lines
1.5 KiB
Python
from job_research.apec.dedupe import dedupe_apec_listings
|
|
from job_research.models import ApecListing
|
|
|
|
|
|
def test_dedupe_apec_listings_by_url_preserves_first_listing() -> None:
|
|
first = ApecListing(
|
|
source="apec",
|
|
url="https://example.test/job/1",
|
|
fetched_at="2026-06-01T10:00:00Z",
|
|
)
|
|
second = ApecListing(
|
|
source="apec",
|
|
url="https://example.test/job/1",
|
|
fetched_at="2026-06-01T10:01:00Z",
|
|
)
|
|
|
|
deduped = dedupe_apec_listings([first, second])
|
|
|
|
assert deduped == [first]
|
|
|
|
|
|
def test_dedupe_apec_listings_by_source_job_id_ignores_url_changes() -> None:
|
|
first = ApecListing(
|
|
source="apec",
|
|
source_job_id="job-123",
|
|
url="https://example.test/job/1",
|
|
fetched_at="2026-06-01T10:00:00Z",
|
|
)
|
|
second = ApecListing(
|
|
source="apec",
|
|
source_job_id="job-123",
|
|
url="https://example.test/job/2",
|
|
fetched_at="2026-06-01T10:01:00Z",
|
|
)
|
|
|
|
deduped = dedupe_apec_listings([first, second])
|
|
|
|
assert deduped == [first]
|
|
|
|
|
|
def test_dedupe_apec_listings_collapses_mixed_key_duplicates() -> None:
|
|
first = ApecListing(
|
|
source="apec",
|
|
source_job_id="job-123",
|
|
url="https://example.test/job/1",
|
|
fetched_at="2026-06-01T10:00:00Z",
|
|
)
|
|
second = ApecListing(
|
|
source="apec",
|
|
source_job_id=None,
|
|
url="https://example.test/job/1",
|
|
fetched_at="2026-06-01T10:01:00Z",
|
|
)
|
|
|
|
deduped = dedupe_apec_listings([first, second])
|
|
|
|
assert deduped == [first]
|