Add per-episode breakdown to guest-star filmography credits
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

FilmographyCreditOut already aggregated a guest star's episode
appearances into one row per series with an episode_count, but never
exposed which episodes those were even though the individual episode
Credit rows exist in the database. Adds an `episodes` list (season/
episode number, title, air date, sorted chronologically) alongside the
existing count -- closes a known limitation tracked in docs/api.md.

Co-Authored-By: Claude Sonnet 5 <[email protected]>
This commit is contained in:
NixReaper
2026-09-05 09:19:52 -05:00
co-authored by Claude Sonnet 5
parent 20f5e82d1b
commit 606d2532c4
5 changed files with 55 additions and 13 deletions
+22 -2
View File
@@ -57,11 +57,24 @@ async def test_person_credits_include_movies_series_and_aggregated_guest_spots(
db_session.add(season)
await db_session.flush()
# Inserted out of episode-number order deliberately, to prove the
# aggregated breakdown sorts by (season, episode) rather than insertion
# or credit-creation order.
episode1 = Episode(
series_id=series.id, season_id=season.id, season_number=1, episode_number=1
series_id=series.id,
season_id=season.id,
season_number=1,
episode_number=2,
title="Second Appearance",
air_date=date(2019, 5, 15),
)
episode2 = Episode(
series_id=series.id, season_id=season.id, season_number=1, episode_number=2
series_id=series.id,
season_id=season.id,
season_number=1,
episode_number=1,
title="First Appearance",
air_date=date(2019, 5, 8),
)
db_session.add_all([episode1, episode2])
await db_session.flush()
@@ -99,3 +112,10 @@ async def test_person_credits_include_movies_series_and_aggregated_guest_spots(
guest = next(c for c in series_entries if c.character == "Guest Character")
assert guest.episode_count == 2
assert len(guest.episodes) == 2
assert [e.episode_number for e in guest.episodes] == [1, 2]
assert [e.title for e in guest.episodes] == ["First Appearance", "Second Appearance"]
assert guest.episodes[0].season_number == 1
assert guest.episodes[0].air_date == date(2019, 5, 8)
assert guest.episodes[0].id == aurora_id("episode", str(episode2.id))
assert guest.episodes[1].id == aurora_id("episode", str(episode1.id))