feat: add WatchMedium field, general review editing, configurable deploy
Some checks failed
CI / Check / Test (push) Failing after 27m0s

- WatchMedium enum (cinema/streaming/tv/physical_media/download/media_server/other)
- PATCH /api/v1/reviews/:id partial update (rating, comment, watched_at, watch_medium)
- edit_review use case w/ ownership + remote review guard, best-effort AP Update broadcast
- SPA: icon picker, edit sheet (long-press mobile / pencil desktop), watch medium badge
- shared ReviewFormFields, EditableContextMenu, parse_watched_at/format_watched_at
- deploy.sh parameterized (--features, --tag), CORS allows PATCH
- CONTEXT.md glossary, ADR-0001 general review editing
This commit is contained in:
2026-07-10 00:01:14 +02:00
parent 9794babe06
commit 29cc68b07c
72 changed files with 1298 additions and 124 deletions

View File

@@ -55,6 +55,7 @@ async fn logs_review_with_manual_movie() {
rating: 4,
comment: None,
watched_at: Utc::now().naive_utc(),
watch_medium: None,
};
logger.log_review(cmd).await.unwrap();
@@ -103,6 +104,7 @@ async fn removes_from_watchlist_on_review() {
rating: 5,
comment: None,
watched_at: Utc::now().naive_utc(),
watch_medium: None,
};
logger.log_review(cmd).await.unwrap();
@@ -140,6 +142,7 @@ async fn logs_review_with_existing_movie_by_id() {
rating: 3,
comment: None,
watched_at: Utc::now().naive_utc(),
watch_medium: None,
};
logger.log_review(cmd).await.unwrap();
@@ -168,6 +171,7 @@ async fn existing_movie_not_found_returns_error() {
rating: 4,
comment: None,
watched_at: Utc::now().naive_utc(),
watch_medium: None,
};
assert!(logger.log_review(cmd).await.is_err());
@@ -193,6 +197,7 @@ async fn invalid_rating_returns_error() {
rating: 6,
comment: None,
watched_at: Utc::now().naive_utc(),
watch_medium: None,
};
let result = logger.log_review(cmd).await;
@@ -222,6 +227,7 @@ async fn watchlist_not_present_does_not_publish_removed() {
rating: 4,
comment: None,
watched_at: Utc::now().naive_utc(),
watch_medium: None,
};
logger.log_review(cmd).await.unwrap();
@@ -289,6 +295,7 @@ async fn publishes_movie_discovered_for_new_movie_with_external_id() {
rating: 5,
comment: None,
watched_at: Utc::now().naive_utc(),
watch_medium: None,
};
logger.log_review(cmd).await.unwrap();