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)); } }
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 }); }
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)); } }
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: }
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: }
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 }); }
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); }
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); }
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); }
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); }
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); }