feat(dot_alfred/v2): bump SCHEMA_VERSION to 2 — added_at on MovieRelease
Phase 3 prep: Movie aggregate is about to become TMDB-only (no filesystem fields). added_at is a release-time observation, not a TMDB-aggregate concern, so it moves to MovieRelease + MovieReleaseSidecar. - Add added_at: datetime (required) to MovieRelease with a type-check in __post_init__. - Add added_at: datetime (required) to MovieReleaseSidecar. - Bump SCHEMA_VERSION 1 → 2 with a version-history note. - Bridge round-trips added_at via Pydantic mode="json" (datetime → ISO 8601 string). - Tests: update MovieRelease fixtures, add a validator test, add an added_at round-trip test, switch hard-coded `1` assertions to SCHEMA_VERSION for future-proofing. No v1 sidecars in the wild yet — no migration code needed.
This commit is contained in:
@@ -17,6 +17,7 @@ from alfred.infrastructure.persistence.dot_alfred.v2.bridge import (
|
||||
series_release_to_sidecar,
|
||||
)
|
||||
from alfred.infrastructure.persistence.dot_alfred.v2.sidecar_release import (
|
||||
SCHEMA_VERSION,
|
||||
MovieReleaseSidecar,
|
||||
SeriesReleaseSidecar,
|
||||
)
|
||||
@@ -25,7 +26,7 @@ from alfred.infrastructure.persistence.dot_alfred.v2.sidecar_release import (
|
||||
class TestSeriesReleaseRoundTrip:
|
||||
def test_domain_to_sidecar_preserves_top_level(self, foundation_release):
|
||||
sidecar = series_release_to_sidecar(foundation_release)
|
||||
assert sidecar.schema_version == 1
|
||||
assert sidecar.schema_version == SCHEMA_VERSION
|
||||
assert sidecar.tmdb_id == 84958
|
||||
assert sidecar.imdb_id == "tt0804484"
|
||||
assert len(sidecar.releases) == 2
|
||||
@@ -71,7 +72,7 @@ class TestSeriesReleaseRoundTrip:
|
||||
class TestMovieReleaseRoundTrip:
|
||||
def test_domain_to_sidecar_preserves_top_level(self, inception_release):
|
||||
sidecar = movie_release_to_sidecar(inception_release)
|
||||
assert sidecar.schema_version == 1
|
||||
assert sidecar.schema_version == SCHEMA_VERSION
|
||||
assert sidecar.tmdb_id == 27205
|
||||
assert sidecar.imdb_id == "tt1375666"
|
||||
assert sidecar.folder == "Inception.2010.1080p.BluRay.x264-GROUP"
|
||||
@@ -89,3 +90,10 @@ class TestMovieReleaseRoundTrip:
|
||||
forced = restored.tracks.subtitle_tracks[1]
|
||||
assert forced.is_forced is True
|
||||
assert forced.language == "fre"
|
||||
|
||||
def test_added_at_round_trips_through_yaml(self, inception_release):
|
||||
sidecar = movie_release_to_sidecar(inception_release)
|
||||
text = yaml.safe_dump(sidecar.model_dump(mode="json"))
|
||||
reloaded = MovieReleaseSidecar.model_validate(yaml.safe_load(text))
|
||||
restored = movie_release_from_sidecar(reloaded)
|
||||
assert restored.added_at == inception_release.added_at
|
||||
|
||||
Reference in New Issue
Block a user