コード例 #1
0
        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));
        }
コード例 #2
0
        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));
        }
コード例 #3
0
        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);
        }