public async Task NotCall_ImageServiceUploadImageMethodOnceWithCorrectParams_WhenImageIsNull() { // Arrange var updateResult = new Mock <IDataModifiedResult>(); updateResult.Setup(r => r.Successful).Returns(true); var sut = this.MockingKernel.Get <ReviewsController>(AjaxContextName); var expectedReview = new BeerReview(); var bindingModel = new CreateReviewBindingModel() { Image = null }; var reviewService = this.MockingKernel.GetMock <IBeerReviewService>(); reviewService.Setup(s => s.CreateReview(It.IsAny <IBeerReview>())) .Returns(updateResult.Object); var mapper = this.MockingKernel.GetMock <IMapper>(); mapper.Setup(m => m.Map(bindingModel, It.IsAny <BeerReview>())) .Returns(expectedReview); var imgUploadService = this.MockingKernel.GetMock <IImageUploadService>(); // Act await sut.Index(bindingModel); // Assert imgUploadService.Verify(s => s.UploadImageAsync(It.IsAny <Stream>(), Constants.DefaultImageSizePx, Constants.DefaultImageSizePx), Times.Never); }
public async Task <ActionResult> Index(CreateReviewBindingModel m) { if (!this.ModelState.IsValid) { return(this.ReviewValidationFailure()); } string imgUrl = null; if (m.Image != null) { var stream = m.Image.InputStream; imgUrl = await this.imageUpload.UploadImageAsync(stream, Constants.DefaultImageSizePx, Constants.DefaultImageSizePx); if (imgUrl == null) { return(this.ImageUploadFailure()); } } var review = new BeerReview(); review = this.mapper.Map(m, review); review.ApplicationUserId = this.User.Identity.GetUserId(); review.ImgUrl = imgUrl ?? review.ImgUrl; var result = this.reviewService.CreateReview(review); if (result.Successful) { return(this.RedirectToAction("My")); } return(this.ReviewValidationFailure()); }
public async Task Call_ImageServiceUploadImageMethodOnceWithCorrectParams_WhenImageIsNotNull() { // Arrange var updateResult = new Mock <IDataModifiedResult>(); updateResult.Setup(r => r.Successful).Returns(true); var expectedStream = new MemoryStream(); var fileMock = new Mock <HttpPostedFileBase>(); fileMock.Setup(m => m.InputStream) .Returns(expectedStream); var sut = this.MockingKernel.Get <ReviewsController>(AjaxContextName); var bindingModel = new CreateReviewBindingModel() { Image = fileMock.Object }; var reviewService = this.MockingKernel.GetMock <IBeerReviewService>(); reviewService.Setup(s => s.CreateReview(It.IsAny <IBeerReview>())) .Returns(updateResult.Object); var imgUploadService = this.MockingKernel.GetMock <IImageUploadService>(); // Act await sut.Index(bindingModel); // Assert imgUploadService.Verify(s => s.UploadImageAsync(expectedStream, Constants.DefaultImageSizePx, Constants.DefaultImageSizePx), Times.Once); }
public async Task Return_CorrectResult_WhenReviewCreationSucceeds() { // Arrange var updateResult = new Mock <IDataModifiedResult>(); updateResult.Setup(r => r.Successful).Returns(true); var sut = this.MockingKernel.Get <ReviewsController>(AjaxContextName); var bindingModel = new CreateReviewBindingModel(); var expectedReview = new BeerReview(); var mapper = this.MockingKernel.GetMock <IMapper>(); mapper.Setup(m => m.Map(bindingModel, It.IsAny <BeerReview>())) .Returns(expectedReview); var reviewService = this.MockingKernel.GetMock <IBeerReviewService>(); reviewService.Setup(s => s.CreateReview(It.IsAny <IBeerReview>())) .Returns(updateResult.Object); // Act var result = await sut.Index(bindingModel) as RedirectToRouteResult; // Assert Assert.IsNotNull(result); Assert.AreEqual("My", result.RouteValues["action"]?.ToString()); Assert.AreEqual(null, result.RouteValues["controller"]?.ToString()); }
public async Task Return_CorrectHttpStatusCodeResult_WhenReviewCreationFails() { // Arrange var expectedErrors = new[] { "error1", "error2" }; var updateResult = new Mock <IDataModifiedResult>(); updateResult.Setup(r => r.Errors).Returns(expectedErrors); // Arrange var sut = this.MockingKernel.Get <ReviewsController>(AjaxContextName); var bindingModel = new CreateReviewBindingModel(); var beerReview = new Mock <IBeerReview>(); var expectedReview = new BeerReview(); var mapper = this.MockingKernel.GetMock <IMapper>(); mapper.Setup(m => m.Map(bindingModel, It.IsAny <BeerReview>())) .Returns(expectedReview); var reviewService = this.MockingKernel.GetMock <IBeerReviewService>(); reviewService.Setup(r => r.GetById(It.IsAny <int>())) .Returns(beerReview.Object); reviewService.Setup(r => r.CreateReview(expectedReview)) .Returns(updateResult.Object); // Act var result = await sut.Index(bindingModel) as HttpStatusCodeResult; // Assert Assert.IsNotNull(result); Assert.AreEqual((int)HttpStatusCode.BadRequest, result.StatusCode); StringAssert.Contains("validation failed", result.StatusDescription); }
public ActionResult Create(CreateReviewBindingModel model) { try { if (!this.ModelState.IsValid) { this.Response.StatusCode = 400; return(this.Json(this.ModelState.Values.SelectMany(x => x.Errors).Select(x => x.ErrorMessage))); } var loggedUserId = this.User.Identity.GetUserId(); var review = new CourseReview { AuthorId = loggedUserId, Comment = model.Comment, Course = model.Course, Teacher = model.Teacher, DatePosted = DateTime.Now }; this.Data.CourseReview.Add(review); this.Data.SaveChanges(); return(this.RedirectToAction("Index")); } catch { return(this.RedirectToAction("Index")); } }
public async Task Return_CorrectHttpStatusCodeResult_WhenModelValidationFails() { // Arrange var sut = this.MockingKernel.Get <ReviewsController>(); var invalidModel = new CreateReviewBindingModel(); sut.InvalidateViewModel(); // Act var result = await sut.Index(invalidModel) as HttpStatusCodeResult; // Assert Assert.IsNotNull(result); Assert.AreEqual((int)HttpStatusCode.BadRequest, result.StatusCode); StringAssert.Contains("validation failed", result.StatusDescription); }
public async Task <IActionResult> Create(CreateReviewBindingModel model, string city, string restaurant) { var restaurantFromDbServiceModel = await restaurantService.GetRestaurantByNameAndCity(city, restaurant); var userId = this.User.FindFirst(ClaimTypes.NameIdentifier).Value; ReviewServiceModel reviewServiceModel = AutoMapper.Mapper.Map <ReviewServiceModel>(model); reviewServiceModel.RestaurantId = restaurantFromDbServiceModel.Id; reviewServiceModel.UserId = userId; reviewServiceModel.Date = DateTime.Now; await reviewsService.Create(reviewServiceModel); var newRestaurantAverageRating = await restaurantService.GetAverageRate(restaurantFromDbServiceModel); await restaurantService.SetNewRating(restaurantFromDbServiceModel.Id, newRestaurantAverageRating); return(this.Redirect($"/Restaurants/{city}/{restaurant}")); }
public async Task Call_IMapperMapMethodOnceWithCorrectParams() { // Arrange var sut = this.MockingKernel.Get <ReviewsController>(AjaxContextName); var bindingModel = new CreateReviewBindingModel(); var expectedReview = new BeerReview(); var mapper = this.MockingKernel.GetMock <IMapper>(); mapper.Setup(m => m.Map(bindingModel, It.IsAny <BeerReview>())) .Returns(expectedReview); var reviewService = this.MockingKernel.GetMock <IBeerReviewService>(); reviewService.Setup(r => r.CreateReview(It.IsAny <IBeerReview>())) .Returns(new Mock <IDataModifiedResult>().Object); // Act await sut.Index(bindingModel); // Assert mapper.Verify(m => m.Map(bindingModel, It.IsAny <BeerReview>()), Times.Once()); }
public async Task Return_CorrectHttpStatusCodeResult_WhenImageUploadFails() { // Arrange var updateResult = new Mock <IDataModifiedResult>(); updateResult.Setup(r => r.Successful).Returns(true); var sut = this.MockingKernel.Get <ReviewsController>(AjaxContextName); var expectedReview = new BeerReview(); var expectedByteArray = new byte[50]; var expectedStream = new MemoryStream(expectedByteArray); var fileMock = new Mock <HttpPostedFileBase>(); fileMock.Setup(m => m.InputStream) .Returns(expectedStream); var bindingModel = new CreateReviewBindingModel() { Image = fileMock.Object }; var reviewService = this.MockingKernel.GetMock <IBeerReviewService>(); reviewService.Setup(s => s.CreateReview(It.IsAny <IBeerReview>())) .Returns(updateResult.Object); var mapper = this.MockingKernel.GetMock <IMapper>(); mapper.Setup(m => m.Map(bindingModel, It.IsAny <BeerReview>())) .Returns(expectedReview); // Act var result = await sut.Index(bindingModel) as HttpStatusCodeResult; // Assert Assert.IsNotNull(result); Assert.AreEqual((int)HttpStatusCode.InternalServerError, result.StatusCode); StringAssert.Contains("could not be uploaded", result.StatusDescription); }