public async Task <BookModelExtended> CreateBook(BookModel bookModel) { if (bookModel == null) { throw new ArgumentNullException(nameof(bookModel)); } var book = mapper.Map <Book>(bookModel); await context.Books.AddAsync(book); await context.SaveChangesAsync(); await elasticClient.IndexDocumentAsync(book); return(await GetExtendedBookModel(book)); }
public async Task <ReviewModel> CreateReview(ReviewModel reviewModel) { if (reviewModel == null) { throw new ArgumentNullException(nameof(reviewModel)); } var book = await context.Books.FindAsync(reviewModel.BookId) ?? throw new EntityNotFoundException($"Cannot create a review. Book with id {reviewModel.BookId} doesn't exist."); var review = mapper.Map <Review>(reviewModel); review.Book = book; await context.Reviews.AddAsync(review); await context.SaveChangesAsync(); return(mapper.Map <ReviewModel>(review)); }
public async Task CreateReviewForExistingBook_CreatesReviewForBookAndReturns() { var existingBook = new Book { Authors = "Isaac Asimov", Title = "Foundation" }; await goodBooksContext.Books.AddAsync(existingBook); await goodBooksContext.SaveChangesAsync(); var newReview = new ReviewModel(existingBook.BookId, "Great book!", "*****@*****.**"); var createdReview = await reviewService.CreateReview(newReview); Assert.NotNull(createdReview); Assert.Equal(newReview.Text, createdReview.Text); Assert.Equal(newReview.Email, createdReview.Email); Assert.Equal(1, goodBooksContext.Reviews.Count()); var review = goodBooksContext.Reviews.Single(); Assert.Equal(newReview.Text, review.Text); Assert.Equal(existingBook.BookId, review.BookId); }