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);
        }
Exemplo n.º 2
0
        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));
        }
Exemplo n.º 4
0
        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);
        }
Exemplo n.º 5
0
        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);
        }
Exemplo n.º 6
0
        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);
        }
Exemplo n.º 7
0
        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);
        }
Exemplo n.º 8
0
        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);
        }
Exemplo n.º 9
0
        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));
        }