public void PostNewReviewForeRestaurant_ValidInput_OkWithUrl() { //arrange var restaurantID = 10; var postedDate = new DateTime(2016, 10, 1); var createdUser = 1; int postedRating = 3; int expectedReviewNumber = 1; string postedComment = "Review comment 1"; User postingUser = new User { Id = createdUser, UserName = "******" }; var expectedResponse = new API.ViewModels.Review { Comment = postedComment, PostedDateTime = postedDate, Rating = postedRating, ReviewNumber = expectedReviewNumber, UserName = postingUser.UserName, }; var requestReview = new API.ViewModels.Review { Comment = postedComment, PostedDateTime = postedDate, Rating = postedRating, UserName = postingUser.UserName, //no review Number }; var transactionRequest = new AddReviewRequestModel { Comment = postedComment, DateTimePosted = postedDate, Rating = postedRating, RestaurantId = restaurantID, UserId = createdUser }; MockRepository.Setup(m => m.AddReviewGetNewId(transactionRequest)).Returns(expectedReviewNumber); MockRepository.Setup(m => m.DoseRestaurentIdExist(restaurantID)).Returns(true); MockRepository.Setup(m => m.DoseUserIdAlreadyExist(postingUser.Id)).Returns(true); MockIdentity.Setup(m => m.GetRequestingUserId()).Returns(createdUser); var ctrl = new ReviewsController(MockRepository.Object, MockLogger.Object, MockIdentity.Object); //act var actionResult = ctrl.Post(restaurantID, requestReview); var createdResult = actionResult as CreatedAtRouteNegotiatedContentResult <API.ViewModels.Review>; //assert Assert.IsNotNull(createdResult, "created-201 status was not returned"); Assert.AreEqual("NewReviewForRestaurant", createdResult.RouteName); Assert.AreEqual(restaurantID, createdResult.RouteValues["id"]); //validate response ValidateReviewResponse(createdResult.Content, expectedResponse); }
public void AddReview_validReviewRatingOne_succeed() { #region Add one review Reviews.Add(new Review { Comment = "Comment 1", CreatedBy = 1, PostedDateTime = DateTime.Now.AddDays(-1), Rating = 3, ReviewNumber = 1, //ReviewRestaurant = Restaurants[0], ReviewUser = Users[0], UpdatedBy = 1 }); #endregion //Assign var expectedRating = 1; var expectedPostedDateTime = DateTime.Now; var expectedComment = "rating comment 2"; var expectedRestId = 2; var expectedCreatedById = 2; var expectedUpdatedById = expectedCreatedById; var expectedReviewNumber = 2; var expectedSucessStatus = true; var reqData = new AddReviewRequestModel() { Rating = expectedRating, DateTimePosted = expectedPostedDateTime, Comment = expectedComment, UserId = expectedCreatedById, RestaurantId = expectedRestId }; var expectedResponse = new AddReviewResponseModel() { WasSucessfull = expectedSucessStatus, ReviewNumber = expectedReviewNumber }; //act var sut = new AddReviewTransaction(Repo, Log, reqData); sut.Execute(); var actualResponse = sut.Response; //assert Assert.AreEqual(expectedSucessStatus, actualResponse.WasSucessfull, "Invalid execution status"); Assert.AreEqual(expectedResponse, actualResponse, "Invalid response"); ValidateResponse(expectedResponse, expectedRating, expectedPostedDateTime, expectedComment, expectedCreatedById, expectedUpdatedById, expectedReviewNumber); }
public AddReviewTransaction CreateAddReviewsForRestaurantTransaction(int restaurantId, Review reviewRequest) { var reqModel = new AddReviewRequestModel { RestaurantId = restaurantId, Comment = reviewRequest.Comment, DateTimePosted = reviewRequest.PostedDateTime, Rating = reviewRequest.Rating, UserId = _identity.GetRequestingUserId() }; return(new AddReviewTransaction(_repo, _log, reqModel)); }
public int AddReviewGetNewId(AddReviewRequestModel reviewToAdd) { var newReview = new Sql.Review { Comment = reviewToAdd.Comment, CreatedBy = reviewToAdd.UserId, UpdatedBy = reviewToAdd.UserId, Rating = reviewToAdd.Rating, RestaurantId = reviewToAdd.RestaurantId, PostedDate = reviewToAdd.DateTimePosted, ReviewUser = reviewToAdd.UserId, CreatedDate = DateTime.Now, UpdatedDate = DateTime.Now }; _restaurantDbContex.Reviews.Add(newReview); _restaurantDbContex.SaveChanges(); return(newReview.ReviewNumber); }
public int AddReviewGetNewId(AddReviewRequestModel addReviewRequestModel) { var reviewedUser = GetUserById(addReviewRequestModel.UserId); var reviewToAdd = new Review { Comment = addReviewRequestModel.Comment, CreatedBy = addReviewRequestModel.UserId, PostedDateTime = addReviewRequestModel.DateTimePosted, Rating = addReviewRequestModel.Rating, UpdatedBy = addReviewRequestModel.UserId, //ReviewRestaurant = reviewedRestaurant, ReviewUser = reviewedUser, ReviewNumber = Reviews.Count + 1 }; Reviews.Add(reviewToAdd); return(Reviews.Count); }
private int FakeAddReview(AddReviewRequestModel addReviewRequestModel) { //var reviewedRestaurant = Repo.GetRestaurantById(addReviewRequestModel.RestaruntId); var reviewedUser = Repo.GetUserById(addReviewRequestModel.UserId); var reviewToAdd = new Review { Comment = addReviewRequestModel.Comment, CreatedBy = addReviewRequestModel.UserId, PostedDateTime = addReviewRequestModel.DateTimePosted, Rating = addReviewRequestModel.Rating, UpdatedBy = addReviewRequestModel.UserId, //ReviewRestaurant = reviewedRestaurant, ReviewUser = reviewedUser, ReviewNumber = Reviews.Count + 1 }; Reviews.Add(reviewToAdd); return(Reviews.Count); }
public void AddReview_RaitingTooHigh_Fail() { AddTwoReviews(); //Assign var expectedRating = 9; var expectedPostedDateTime = DateTime.Now; var expectedComment = "rating comment 9"; var expectedRestId = 2; var expectedCreatedById = 3; var expectedReviewNumber = 0; var expectedSucessStatus = false; var reqData = new AddReviewRequestModel() { Rating = expectedRating, DateTimePosted = expectedPostedDateTime, Comment = expectedComment, UserId = expectedCreatedById, RestaurantId = expectedRestId }; var expectedResponse = new AddReviewResponseModel() { WasSucessfull = expectedSucessStatus, ReviewNumber = expectedReviewNumber }; //act var sut = new AddReviewTransaction(Repo, Log, reqData); sut.Execute(); var actualResponse = sut.Response; //assert Assert.AreEqual(expectedSucessStatus, actualResponse.WasSucessfull, "Invalid execution status"); Assert.AreEqual(expectedResponse, actualResponse, "Invalid response"); var noneAddreReview = Reviews.Find(r => r.ReviewNumber == expectedReviewNumber); Assert.IsNull(noneAddreReview); }
public void AddReview_vlaidReviewRatingFive_succeed() { AddTwoReviews(); //Assign var expectedRating = 5; var expectedPostedDateTime = DateTime.Now; var expectedComment = "rating comment 5"; var expectedRestId = 2; var expectedCreatedById = 3; var expectedUpdatedById = expectedCreatedById; var expectedReviewNumber = 3; var expectedSucessStatus = true; var reqData = new AddReviewRequestModel() { Rating = expectedRating, DateTimePosted = expectedPostedDateTime, Comment = expectedComment, UserId = expectedCreatedById, RestaurantId = expectedRestId }; var expectedResponse = new AddReviewResponseModel() { WasSucessfull = expectedSucessStatus, ReviewNumber = expectedReviewNumber }; //act var sut = new AddReviewTransaction(Repo, Log, reqData); sut.Execute(); var actualResponse = sut.Response; //assert Assert.AreEqual(expectedSucessStatus, actualResponse.WasSucessfull, "Invalid execution status"); Assert.AreEqual(expectedResponse, actualResponse, "Invalid response"); ValidateResponse(expectedResponse, expectedRating, expectedPostedDateTime, expectedComment, expectedCreatedById, expectedUpdatedById, expectedReviewNumber); }
public async Task <SuccessResponseModel> AddAsync(string userId, int restaurantId, AddReviewRequestModel model) { var restaurant = await GetRestaurantAsync(restaurantId); ReviewEntity entity = new ReviewEntity { Rating = model.Rating, RestaurantId = restaurantId, Text = model.Text, UserId = userId }; await _context.Reviews.AddAsync(entity); restaurant.Rating = await _context.Reviews .Where(x => x.RestaurantId == restaurantId) .AverageAsync(x => x.Rating); await _context.ReviewTags.AddRangeAsync(await AssignTagsToReview(entity.Id, model.Tags)); await _context.SaveChangesAsync(); return(new SuccessResponseModel { Id = entity.Id }); }
public async Task <IActionResult> Add([FromRoute] int id, [FromBody] AddReviewRequestModel model) { SuccessResponseModel result = await _reviewService.AddAsync(User.Identity.Name, id, model); return(Ok(result)); }