public IHttpActionResult Post(int id, [FromBody] ViewModels.Review reviewRequest)
        {
            try
            {
                AddReviewTransaction tran = Factory.CreateAddReviewsForRestaurantTransaction(id, reviewRequest);
                tran.Execute();

                if (tran.Response.WasSucessfull)
                {
                    reviewRequest.ReviewNumber = tran.Response.ReviewNumber;
                    return(CreatedAtRoute("NewReviewForRestaurant", new { id = id }, reviewRequest));
                }
                else
                {
                    return(BadRequest());
                }
            }
            catch (UserNotFoundException) { return(BadRequest()); }
            catch (RestaurantNotFoundException) { return(NotFound()); }
            catch (Exception ex)
            {
                Logger.ErrorLog($"Web API failed getting restaurant id {id}", ex);
                return(InternalServerError());
            }
        }
Ejemplo 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);
        }
Ejemplo n.º 3
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);
        }
Ejemplo n.º 4
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);
        }