"""Shared fixtures for ``alfred.application.tv_shows`` tests. These mirror the v2 dot_alfred conftest (tv_library + foundation_release + now_utc) so the sync orchestrator tests can compose against the same realistic aggregate without cross-package fixture inheritance. """ from __future__ import annotations from datetime import UTC, datetime import pytest from alfred.domain.releases.entities import ( EpisodeRelease, SeasonRelease, SeriesRelease, TrackProfile, ) from alfred.domain.releases.value_objects import EpisodeRange, ReleaseMode from alfred.domain.shared.media import AudioTrack from alfred.domain.shared.value_objects import FilePath, ImdbId, TmdbId from alfred.domain.tv_shows.value_objects import EpisodeNumber, SeasonNumber @pytest.fixture def tv_library(tmp_path): """Empty ``tv_shows/`` with a Foundation/ folder ready for sidecars.""" root = tmp_path / "tv_shows" root.mkdir() (root / "Foundation").mkdir() return root @pytest.fixture def foundation_release() -> SeriesRelease: """Minimal Foundation S01 PACK — enough for slot-map assertions.""" season = SeasonRelease( season_number=SeasonNumber(1), folder="Foundation.S01", mode=ReleaseMode.PACK, episodes=( EpisodeRelease( episodes=EpisodeRange(EpisodeNumber(1), EpisodeNumber(1)), file_path=FilePath("Foundation.S01/Foundation.S01E01.mkv"), tracks=TrackProfile( audio_tracks=( AudioTrack( index=0, codec="eac3", channels=6, channel_layout="5.1", language="eng", ), ), ), ), ), ) return SeriesRelease( tmdb_id=TmdbId(84958), imdb_id=ImdbId("tt0804484"), seasons=(season,), ) @pytest.fixture def now_utc() -> datetime: """Stable UTC reference for deterministic fetched_at fields.""" return datetime(2026, 5, 25, 8, 30, 0, tzinfo=UTC)