Esempio n. 1
0
        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());
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        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());
        }
Esempio n. 5
0
        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);
        }
Esempio n. 6
0
        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"));
            }
        }
Esempio n. 7
0
        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}"));
        }
Esempio n. 9
0
        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());
        }
Esempio n. 10
0
        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);
        }