fix: NewRemoteReview param struct, atomic review+orphan movie delete
This commit is contained in:
@@ -517,3 +517,61 @@ async fn saving_a_watch_event_records_its_events() {
|
||||
assert_eq!(store.rows_in("watch_events"), 1);
|
||||
assert_eq!(store.recorded_events().len(), 1);
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn deleting_the_last_review_removes_the_movie_and_records_both_events() {
|
||||
let store = InMemoryStore::new();
|
||||
let (movie, user_id) = seed_movie_with_dependents(&store, true).await;
|
||||
let review = store
|
||||
.get_all_reviews_for_user(&user_id)
|
||||
.await
|
||||
.unwrap()
|
||||
.remove(0);
|
||||
|
||||
store
|
||||
.delete_review_and_orphaned_movie(
|
||||
review.id(),
|
||||
movie.id(),
|
||||
&[domain::events::DomainEvent::ReviewDeleted {
|
||||
review_id: review.id().clone(),
|
||||
user_id: user_id.clone(),
|
||||
}],
|
||||
&[movie_deleted(&movie)],
|
||||
)
|
||||
.await
|
||||
.unwrap();
|
||||
|
||||
assert_eq!(store.review_count(), 0);
|
||||
assert_eq!(store.movie_count(), 0);
|
||||
assert_eq!(store.recorded_events().len(), 2);
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn deleting_a_review_while_another_remains_keeps_the_movie_and_records_one_event() {
|
||||
let store = InMemoryStore::new();
|
||||
let (movie, user_id) = seed_movie_with_dependents(&store, true).await;
|
||||
let review = store
|
||||
.get_all_reviews_for_user(&user_id)
|
||||
.await
|
||||
.unwrap()
|
||||
.remove(0);
|
||||
let other = test_review(movie.id(), &UserId::generate(), 3);
|
||||
store.save_review(&other, &[]).await.unwrap();
|
||||
|
||||
store
|
||||
.delete_review_and_orphaned_movie(
|
||||
review.id(),
|
||||
movie.id(),
|
||||
&[domain::events::DomainEvent::ReviewDeleted {
|
||||
review_id: review.id().clone(),
|
||||
user_id: user_id.clone(),
|
||||
}],
|
||||
&[movie_deleted(&movie)],
|
||||
)
|
||||
.await
|
||||
.unwrap();
|
||||
|
||||
assert_eq!(store.review_count(), 1);
|
||||
assert_eq!(store.movie_count(), 1);
|
||||
assert_eq!(store.recorded_events().len(), 1);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user