test: shared factories and command builders
This commit is contained in:
@@ -1,30 +1,15 @@
|
||||
use crate::test_support::edit_review_command;
|
||||
use std::sync::Arc;
|
||||
|
||||
use chrono::Utc;
|
||||
use uuid::Uuid;
|
||||
|
||||
use domain::{
|
||||
models::Review,
|
||||
models::ReviewEdit,
|
||||
ports::ReviewRepository,
|
||||
testing::{InMemoryReviewRepository, NoopEventPublisher},
|
||||
value_objects::{Comment, MovieId, Rating, ReviewId, UserId, WatchMedium},
|
||||
testing::{InMemoryReviewRepository, NoopEventPublisher, test_review},
|
||||
value_objects::{Comment, MovieId, ReviewId, UserId, WatchMedium},
|
||||
};
|
||||
|
||||
use crate::diary::{commands::EditReviewCommand, deps::EditReviewDeps, edit_review};
|
||||
|
||||
fn make_review(user_id: UserId) -> Review {
|
||||
Review::new(
|
||||
MovieId::generate(),
|
||||
user_id,
|
||||
Rating::new(3).unwrap(),
|
||||
Some(Comment::new("original comment".into()).unwrap()),
|
||||
Utc::now().naive_utc(),
|
||||
Some(WatchMedium::Streaming),
|
||||
false,
|
||||
)
|
||||
.unwrap()
|
||||
}
|
||||
|
||||
async fn setup() -> (
|
||||
Arc<InMemoryReviewRepository>,
|
||||
Arc<NoopEventPublisher>,
|
||||
@@ -34,7 +19,11 @@ async fn setup() -> (
|
||||
let reviews = InMemoryReviewRepository::new();
|
||||
let events = NoopEventPublisher::new();
|
||||
let user_id = UserId::generate();
|
||||
let review = make_review(user_id.clone());
|
||||
let review = test_review(&MovieId::generate(), &user_id, 3).apply_edit(ReviewEdit {
|
||||
comment: Some(Some(Comment::new("original comment".into()).unwrap())),
|
||||
watch_medium: Some(Some(WatchMedium::Streaming)),
|
||||
..Default::default()
|
||||
});
|
||||
let review_id = review.id().clone();
|
||||
reviews.save_review(&review).await.unwrap();
|
||||
(reviews, events, review_id, user_id)
|
||||
@@ -59,11 +48,7 @@ async fn edit_own_review_updates_rating() {
|
||||
EditReviewCommand {
|
||||
review_id: review_id.value(),
|
||||
requesting_user_id: user_id.value(),
|
||||
rating: Some(5),
|
||||
comment: None,
|
||||
watched_at: None,
|
||||
watch_medium: None,
|
||||
spoilers: None,
|
||||
..edit_review_command(5)
|
||||
},
|
||||
)
|
||||
.await
|
||||
@@ -80,20 +65,9 @@ async fn edit_nonexistent_review_returns_not_found() {
|
||||
let reviews = InMemoryReviewRepository::new();
|
||||
let events = NoopEventPublisher::new();
|
||||
|
||||
let err = edit_review::execute(
|
||||
&deps(&reviews, &events),
|
||||
EditReviewCommand {
|
||||
review_id: Uuid::new_v4(),
|
||||
requesting_user_id: Uuid::new_v4(),
|
||||
rating: Some(5),
|
||||
comment: None,
|
||||
watched_at: None,
|
||||
watch_medium: None,
|
||||
spoilers: None,
|
||||
},
|
||||
)
|
||||
.await
|
||||
.unwrap_err();
|
||||
let err = edit_review::execute(&deps(&reviews, &events), edit_review_command(5))
|
||||
.await
|
||||
.unwrap_err();
|
||||
|
||||
assert!(matches!(err, domain::errors::DomainError::NotFound(_)));
|
||||
}
|
||||
@@ -106,12 +80,7 @@ async fn edit_other_users_review_returns_forbidden() {
|
||||
&deps(&reviews, &events),
|
||||
EditReviewCommand {
|
||||
review_id: review_id.value(),
|
||||
requesting_user_id: Uuid::new_v4(),
|
||||
rating: Some(5),
|
||||
comment: None,
|
||||
watched_at: None,
|
||||
watch_medium: None,
|
||||
spoilers: None,
|
||||
..edit_review_command(5)
|
||||
},
|
||||
)
|
||||
.await
|
||||
@@ -129,11 +98,7 @@ async fn edit_publishes_review_updated_event() {
|
||||
EditReviewCommand {
|
||||
review_id: review_id.value(),
|
||||
requesting_user_id: user_id.value(),
|
||||
rating: Some(1),
|
||||
comment: None,
|
||||
watched_at: None,
|
||||
watch_medium: None,
|
||||
spoilers: None,
|
||||
..edit_review_command(1)
|
||||
},
|
||||
)
|
||||
.await
|
||||
@@ -154,13 +119,11 @@ async fn edit_sets_watch_medium() {
|
||||
edit_review::execute(
|
||||
&deps(&reviews, &events),
|
||||
EditReviewCommand {
|
||||
rating: None,
|
||||
review_id: review_id.value(),
|
||||
requesting_user_id: user_id.value(),
|
||||
rating: None,
|
||||
comment: None,
|
||||
watched_at: None,
|
||||
watch_medium: Some(Some(WatchMedium::Cinema)),
|
||||
spoilers: None,
|
||||
..edit_review_command(1)
|
||||
},
|
||||
)
|
||||
.await
|
||||
|
||||
Reference in New Issue
Block a user