Fix two more test bugs surfaced by the full integration run
CI / lint (push) Canceled after 0s
CI / typecheck (push) Canceled after 0s
CI / unit-tests (push) Canceled after 0s
CI / integration-tests (push) Canceled after 0s
CI / container-build (push) Canceled after 0s
CI / dependency-audit (push) Canceled after 0s
CI / lint (push) Canceled after 0s
CI / typecheck (push) Canceled after 0s
CI / unit-tests (push) Canceled after 0s
CI / integration-tests (push) Canceled after 0s
CI / container-build (push) Canceled after 0s
CI / dependency-audit (push) Canceled after 0s
1. test_ingestion_cache_invalidation.py: the job was created through
the test's db_session fixture, whose commit() only ends a savepoint
that gets rolled back at teardown (see tests/conftest.py) -- it's
never a real commit. _run_ingestion looks the job up through its
own session_scope() (a genuinely separate connection), which could
never see it, so the very first _require_job call raised "job
vanished mid-run" every time. Worse, test_failed_ingestion_does_not_
invalidate_the_cache still passed, coincidentally -- it expected a
RuntimeError and got one, just the wrong one, masking the bug.
Fixed by having _make_job create the job through session_scope()
itself, matching test_ingestion_retry.py's existing pattern.
2. Same class of bug as the video-collision fix in the last commit:
FAKE_MOVIE's fixed imdb_id ("tt0133093"), not just its video, also
collides across two different fake movies sharing it unmodified --
uq_external_id_source is a real unique constraint on
(provider_id, entity_type, external_id). Fixed by also overriding
imdb_id on the second movie in both affected tests.
All caught by running the actual integration suite against Postgres --
these paths were previously only collect-only'd locally (no local DB).
Co-Authored-By: Claude Sonnet 5 <[email protected]>
This commit is contained in:
co-authored by
Claude Sonnet 5
parent
29fffc8919
commit
0a50e0ffb6
@@ -57,9 +57,10 @@ async def test_ingest_collection_only_links_already_ingested_movies(db_session:
|
||||
already knows about, in release-date order, never fabricate a stub for
|
||||
the other two (section 15)."""
|
||||
|
||||
# 604's videos overridden to empty: FAKE_MOVIE's embedded video has a
|
||||
# fixed provider_video_id, and two different movies both ingesting it
|
||||
# would collide on the real uq_video_provider_source unique constraint.
|
||||
# 604's videos and imdb_id overridden: FAKE_MOVIE's embedded video and
|
||||
# imdb_id are both fixed identifiers, and two different movies both
|
||||
# ingesting them unmodified would collide on the real
|
||||
# uq_video_provider_source / uq_external_id_source unique constraints.
|
||||
provider = FakeTMDbCollectionProvider(
|
||||
movie_payloads={
|
||||
"603": {**FAKE_MOVIE, "id": 603, "title": "The Matrix"},
|
||||
@@ -68,6 +69,7 @@ async def test_ingest_collection_only_links_already_ingested_movies(db_session:
|
||||
"id": 604,
|
||||
"title": "The Matrix Reloaded",
|
||||
"videos": {"results": []},
|
||||
"imdb_id": "tt0234215",
|
||||
},
|
||||
},
|
||||
collection_payload=FAKE_COLLECTION,
|
||||
|
||||
Reference in New Issue
Block a user