public async Task<HttpResponseMessage> Update(ReviewModel review)
 {
     
     ReviewModel model = new ReviewModel();
     try
     {
         model = await _reviewService.UpdateAsync(review);
     }
     catch (HttpRequestException ex)
     {
         Trace.TraceError(ex.Message);
         return Request.CreateErrorResponse(HttpStatusCode.InternalServerError, ex.Message);
     }
     catch (WebException we)
     {
         Trace.TraceError(we.Message);
         return Request.CreateErrorResponse(HttpStatusCode.InternalServerError, we.Message);
     }
     catch (SecurityException se)
     {
         Trace.TraceError(se.Message);
         return Request.CreateErrorResponse(HttpStatusCode.Forbidden, "Not Authorised to this server!!");
     }
     catch (Exception ex)
     {
         Trace.TraceError(ex.Message);
         return Request.CreateErrorResponse(HttpStatusCode.InternalServerError, ex.Message);
     }
     return Request.CreateResponse(HttpStatusCode.OK, model);
 }
        public async Task WhenWeDoAGetWithId_WeRetrieve_ASingleReview()
        {
            //Arrange
            int existingReviewId = 29;


            //Act
            ReviewModel review = new ReviewModel();
            var result = await reviewsController.GetById(existingReviewId);
            result.TryGetContentValue(out review);

            //Assert
            Assert.IsNotNull(review);
            Assert.IsTrue(review.Id == existingReviewId);
        }
        public void ADD_GivenAReviewModel_WhenItIsAdded_EnsureThatItIsAddedToTheDatabse()
        {
            //Arrange
            ReviewModel newReviewModel = new ReviewModel
            {
                CreateDateTime = DateTime.Now,
                CreatedByAuthor = "Saly Harding",
                ModifiedBy = "Terry Mcpherson",
                ModifiedDateTime = DateTime.Now,
                Rating = 6,
                SubmittedBy = "Joe Bloggs",
                Text = "Very Good, easy and quick",
                Title = "Easy"
            };

            //Act
            var result = manager.Add(newReviewModel);
            repository.Commit();

            //Assert
            Assert.IsInstanceOfType(result, typeof(ReviewModel));
        }
        public async Task WhenWeDoAPost_WeAddAReview_AntWAndWantToBeSureTheReviewIsReturned()
        {
            //Arrange
            ReviewModel newReviewModel = new ReviewModel
            {
                CreateDateTime = DateTime.Now,
                CreatedByAuthor = "Sally Harding",
                ModifiedBy = "Terry Mcpherson",
                ModifiedDateTime = DateTime.Now,
                Rating = 6,
                SubmittedBy = "Joe Bloggs",
                Text = "This is a test for A new review",
                Title = "Easy", 
                
            };

            //Act
            ReviewModel returnedReview = new ReviewModel();
            var result = await reviewsController.Add(newReviewModel);
            result.TryGetContentValue(out returnedReview);

            //Assert
            Assert.IsInstanceOfType(returnedReview, typeof(ReviewModel));
        }
        public async Task WhenWeDoAPut_TheRevieweGetsUpdated()
        {
            //Arrange
            ReviewModel existingReviewModel = new ReviewModel
            {
                Id = 24,
                CreateDateTime = DateTime.Now,
                CreatedByAuthor = "Sally Harding",
                ModifiedBy = "Terry Mcpherson",
                ModifiedDateTime = DateTime.Now,
                Rating = 6,
                SubmittedBy = "Joe Bloggs",
                Text = "UPDATE TEST!!",
                Title = "HARD"
            };

            
            //Act
            ReviewModel changedReviewModel;
            var result = await reviewsController.Update(existingReviewModel);
            result.TryGetContentValue(out changedReviewModel);

            //Arrange
            Assert.IsTrue(changedReviewModel.Text == existingReviewModel.Text);
            Assert.IsNotNull(changedReviewModel);
            Assert.IsInstanceOfType(changedReviewModel, typeof(ReviewModel));
        }
 public async Task<ReviewModel> UpdateAsync(ReviewModel review)
 {
     return await _reviewManager.UpdateAsync(review);
 }
 public async Task<ReviewModel> AddAsync(ReviewModel review)
 {
     return await _reviewManager.AddAsync(review);
 }
        [TestCategory("Update"), TestMethod()]//Update Failing problem with ID Changing
        public void UPDATE_GivenAnExistingReview_UpdateTheName()
        {
            //Arrange
            ReviewModel existingReviewModel = new ReviewModel
            {
                CreateDateTime = DateTime.Now,
                CreatedByAuthor = "Sally Harding",
                Id = 13,
                ModifiedBy = "Sally Hartding",
                ModifiedDateTime = DateTime.Now,
                Rating = 5,
                SubmittedBy = "Terry Mcpherson",
                Text = "Lovely Recipe!!",
                Title = "Lovely food"
            };

            //Act
            var result = manager.Update(existingReviewModel);

            //Assert
            Assert.IsInstanceOfType(result, typeof(ReviewModel));
            Assert.IsNotNull(result);
        }