示例#1
0
 public IActionResult UpdateUserReviewByBookId(int userId, int bookId, [FromBody] BookReviewViewModel updatedReview)
 {
     if (updatedReview == null)
     {
         return(BadRequest());
     }
     if (!ModelState.IsValid)
     {
         return(StatusCode(412));
     }
     try
     {
         var response = _reviewsService.EditReview(userId, bookId, updatedReview);
         return(Ok(response));
     }
     catch (UserNotFoundException e)
     {
         return(NotFound(e.Message));
     }
     catch (BookNotFoundException e)
     {
         return(NotFound(e.Message));
     }
     catch (ReviewNotFoundException e)
     {
         return(NotFound(e.Message));
     }
 }
示例#2
0
        public BookReviewDTO EditReview(int userId, int bookId, BookReviewViewModel updatedReview)
        {
            var user = _userRepo.getUserById(userId);
            var book = _bookRepo.getBookById(bookId);

            if (user == null)
            {
                throw new UserNotFoundException();
            }
            if (book == null)
            {
                throw new BookNotFoundException();
            }

            var review = _repo.GetUserReview(userId, bookId);

            if (review == null)
            {
                throw new ReviewNotFoundException();
            }
            var result = _repo.UpdateUserReview(userId, bookId, updatedReview);

            return(new BookReviewDTO
            {
                BookReviewId = result.BookReviewId,
                UserId = user.UserId,
                UserName = user.FirstName + " " + user.LastName,
                DateOfReview = result.DateOfReview,
                Rating = result.Rating,
                Review = result.Review
            });
        }
示例#3
0
 public IActionResult AddUserReviewByBookId(int userId, int bookId, [FromBody] BookReviewViewModel newReview)
 {
     if (newReview == null)
     {
         return(BadRequest());
     }
     if (!ModelState.IsValid)
     {
         return(StatusCode(412));
     }
     try
     {
         var response = _reviewsService.AddReview(userId, bookId, newReview);
         return(Ok(response));
     }
     catch (UserNotFoundException e)
     {
         return(NotFound(e.Message));
     }
     catch (BookNotFoundException e)
     {
         return(NotFound(e.Message));
     }
     catch (AlreadyReviewedByUserException e)
     {
         return(NotFound(e.Message));
     }
 }
示例#4
0
        public async Task <ActionResult <BookReviewViewModel> > PostReview([FromBody] BookReviewViewModel bookReviewViewModel)
        {
            if (!BookExists(bookReviewViewModel.BookId))
            {
                return(NotFound($"Book with id '{bookReviewViewModel.BookId}' does not exist."));
            }

            var bookReview = mapper.Map <BookReview>(bookReviewViewModel);

            bookReview.UserId = AuthHelper.GetUserId(User);

            await bookService.CreateBookReviewAsync(bookReview);

            return(Ok(mapper.Map <BookReviewViewModel>(bookReview)));
        }
        public void EditReview_InvalidBookId()
        {
            // Arrange:
            var userId    = 7;
            var bookId    = 500;
            var newReview = new BookReviewViewModel
            {
                Rating = 4,
                Review = "geggjud bok",
            };
            // Act:
            var review = _reviewService.EditReview(userId, bookId, newReview);

            // Assert:
        }
示例#6
0
        public ActionResult Delete(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            Review review = db.Reviews.Find(id);
            BookReviewViewModel bookReviewViewModel = BuildBookReviewViewModel(review);

            if (review == null)
            {
                return(HttpNotFound());
            }
            return(View(bookReviewViewModel));
        }
        public BookReview UpdateUserReview(int userId, int bookId, BookReviewViewModel review)
        {
            var updatedReview = _db.BookReviews.SingleOrDefault(r => r.UserId == userId && r.BookId == bookId);

            if (updatedReview == null)
            {
                throw new ReviewNotFoundException();
            }

            updatedReview.Rating = review.Rating;
            updatedReview.Review = review.Review;

            _db.SaveChanges();

            return(updatedReview);
        }
        public void AddReview_ValidIds_ReviewAlreadyExist()
        {
            // Arrange:
            int userId    = 8;
            int bookId    = 8;
            var newReview = new BookReviewViewModel
            {
                Rating = 4,
                Review = "geggjud bok",
            };

            // Act:
            _reviewService.AddReview(userId, bookId, newReview);

            // Assert:
        }
        public void EditReview_ReviewDoesNotExist()
        {
            // Arrange:
            var userId    = 4;
            var bookId    = 4;
            var newReview = new BookReviewViewModel
            {
                Rating = 4,
                Review = "geggjud bok",
            };

            // Act:
            var review = _reviewService.EditReview(userId, bookId, newReview);

            // Assert:
        }
示例#10
0
        public UserReviewDTO AddReview(int userId, int bookId, BookReviewViewModel newReview)
        {
            var user = _userRepo.getUserById(userId);
            var book = _bookRepo.getBookById(bookId);

            if (user == null)
            {
                throw new UserNotFoundException();
            }
            if (book == null)
            {
                throw new BookNotFoundException();
            }
            try
            {
                GetUserReview(userId, bookId);
                throw new AlreadyReviewedByUserException();
            }
            catch (ReviewNotFoundException e)
            {
                // Good thing, there is no review :p!
            }

            var review = new BookReview
            {
                UserId       = userId,
                BookId       = bookId,
                DateOfReview = DateTime.Now,
                Rating       = newReview.Rating,
                Review       = newReview.Review
            };

            _bookRepo.SetBookRating(review.Rating, bookId);

            var result = _repo.AddUserReview(review);

            return(new UserReviewDTO
            {
                BookReviewId = result.BookReviewId,
                BookTitle = book.Title,
                DateOfReview = result.DateOfReview,
                Rating = result.Rating,
                Review = result.Review
            });
        }
示例#11
0
        public void UpdateUserReviewByBookId_ValidId()
        {
            // Arrange:
            var controller = new UsersController(_usersService, _reviewsService);
            var userId     = 1;
            var bookId     = 9;
            var review     = new BookReviewViewModel
            {
                Rating = 5,
                Review = "ok bok",
            };
            // Act:
            var result       = controller.UpdateUserReviewByBookId(userId, bookId, review);
            var deleteResult = result as NoContentResult;


            // Assert:
            Assert.IsNotNull(result);
            // Assert.AreEqual(204, deleteResult.StatusCode);
        }
示例#12
0
        public void AddUserReviewByBookId_ValidId()
        {
            // Arrange:
            var controller = new UsersController(_usersService, _reviewsService);
            var userId     = 4;
            var bookId     = 4;
            var newReview  = new BookReviewViewModel
            {
                Rating = 4,
                Review = "geggjud bok",
            };
            // Act:
            var result   = controller.AddUserReviewByBookId(userId, bookId, newReview);
            var okResult = result as OkObjectResult;


            // Assert:
            Assert.IsNotNull(result);
            Assert.AreEqual(200, okResult.StatusCode);
        }
示例#13
0
        public void UpdateUserReviewByBookId_BothIdsInvalid()
        {
            // Arrange:
            var controller = new UsersController(_usersService, _reviewsService);
            var userId     = 100;
            var bookId     = 100;
            var review     = new BookReviewViewModel
            {
                Rating = 5,
                Review = "ok bok",
            };
            // Act:
            var result         = controller.UpdateUserReviewByBookId(userId, bookId, review);
            var notFoundResult = result as NotFoundObjectResult;


            // Assert:
            Assert.IsNotNull(result);
            Assert.AreEqual(404, notFoundResult.StatusCode);
        }
示例#14
0
        public void UpdateBookReviewsByUser_ValidId()
        {
            // Arrange:
            var controller = new BooksController(_booksService, _reviewsService);
            var userId     = 1;
            var bookId     = 1;
            var review     = new BookReviewViewModel
            {
                Rating = 5,
                Review = "ok bok",
            };
            // Act:
            var result   = controller.UpdateBookReviewsByUser(userId, bookId, review);
            var okResult = result as OkObjectResult;


            // Assert:
            Assert.IsNotNull(result);
            Assert.AreEqual(200, okResult.StatusCode);
        }
示例#15
0
        public ActionResult Edit(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }

            Review review = db.Reviews.Find(id);
            BookReviewViewModel bookReviewViewModel = BuildBookReviewViewModel(review);
            //generate select list with ids for brewery dropdown
            var bookList = db.Books.Select(b => b);

            ViewBag.SelectBookList = new SelectList(bookList, "Id", "Title");


            if (review == null)
            {
                return(HttpNotFound());
            }
            return(View(bookReviewViewModel));
        }
        public void AddReview()
        {
            // Arrange:
            int userId    = 8;
            int bookId    = 8;
            var newReview = new BookReviewViewModel
            {
                Rating = 4,
                Review = "geggjud bok",
            };
            var prevCountAll  = _reviewService.GetAllBookReviewsForAllBooks().Sum(i => i.Reviews.Count());
            var prevCountUser = _reviewService.GetAllUserReviews(userId).Count();
            var prevCountBook = _reviewService.GetAllBookReviews(bookId).Count();

            // Act:
            _reviewService.AddReview(userId, bookId, newReview);

            // Assert:

            // Ensure that a new entity object has been created:
            var currentCountAll  = _reviewService.GetAllBookReviewsForAllBooks().Sum(i => i.Reviews.Count());
            var currentCountUser = _reviewService.GetAllUserReviews(userId).Count();
            var currentCountBook = _reviewService.GetAllBookReviews(bookId).Count();

            Assert.AreEqual(prevCountAll + 1, currentCountAll);
            Assert.AreEqual(prevCountUser + 1, currentCountUser);
            //Assert.AreEqual(prevCountBook + 1, currentCountBook);

            // Get access to the entity object and assert that
            // the properties have been set:
            var newEntity = _reviewService.GetUserReview(userId, bookId);

            Assert.AreEqual(4, newEntity.Rating);
            Assert.AreEqual(DateTime.Now.Date, newEntity.DateOfReview.Date);
            Assert.AreEqual("geggjud bok", newEntity.Review);
            Assert.AreEqual("8title", newEntity.BookTitle);
            Assert.AreEqual(11, newEntity.BookReviewId);
        }
        public void EditReview()
        {
            // Arrange:
            int userId    = 9;
            int bookId    = 9;
            var newReview = new BookReviewViewModel
            {
                Rating = 4,
                Review = "geggjud bok"
            };
            var prevCountAll  = _reviewService.GetAllBookReviewsForAllBooks().Sum(i => i.Reviews.Count());
            var prevCountUser = _reviewService.GetAllUserReviews(userId).Count();
            var prevCountBook = _reviewService.GetAllBookReviews(bookId).Count();

            // Act:
            _reviewService.EditReview(userId, bookId, newReview);

            // Assert:

            // Ensure that a new entity object has been updated and not just added to the list:
            var currentCountAll  = _reviewService.GetAllBookReviewsForAllBooks().Sum(i => i.Reviews.Count());
            var currentCountUser = _reviewService.GetAllUserReviews(userId).Count();
            var currentCountBook = _reviewService.GetAllBookReviews(bookId).Count();

            Assert.AreEqual(prevCountAll, currentCountAll);
            Assert.AreEqual(prevCountUser, currentCountUser);
            Assert.AreEqual(prevCountBook, currentCountBook);

            // Get access to the entity object and assert that
            // the properties have been set:
            var newEntity = _reviewService.GetUserReview(userId, bookId);

            Assert.AreEqual(8, newEntity.BookReviewId);
            Assert.AreEqual("9title", newEntity.BookTitle);
            Assert.AreEqual(4, newEntity.Rating);
            Assert.AreEqual("geggjud bok", newEntity.Review);
            Assert.AreEqual(new DateTime(1988, 10, 2), newEntity.DateOfReview);
        }