public void CreatePost_Should_SetTempData_NotificationsWithCorrectMessage_WhenThereIsAnExceptionOnCreatingInDatabase()
        {
            // Arrange
            var context  = new Mock <HttpContextBase>();
            var identity = new GenericIdentity("*****@*****.**");

            identity.AddClaim(new Claim("http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier", "1"));
            var principal = new GenericPrincipal(identity, new[] { "user" });

            context.Setup(s => s.User).Returns(principal);

            var model = new AdvertCreateViewModel();
            IEnumerable <HttpPostedFileBase> uploadedFiles = null;

            var mockedAdvertService       = new Mock <IAdvertService>();
            var mockedMappingService      = new Mock <IMappingService>();
            var mockedCityService         = new Mock <ICityService>();
            var mockedVehicleModelService = new Mock <IVehicleModelService>();

            mockedAdvertService.Setup(a => a.CreateAdvert(It.IsAny <Advert>(), It.IsAny <IEnumerable <HttpPostedFileBase> >())).Throws(new Exception());

            var advertController = new AdvertController(
                mockedAdvertService.Object,
                mockedMappingService.Object,
                mockedVehicleModelService.Object,
                mockedCityService.Object);

            advertController.ControllerContext = new ControllerContext(context.Object, new RouteData(), advertController);

            // Act
            advertController.Create(model, uploadedFiles);

            // Assert
            Assert.AreEqual(advertController.TempData["Notification"], "Exception.");
        }
        public IActionResult Create(AdvertCreateViewModel model)
        {
            if (ModelState.IsValid)
            {
                string uniqueFileName = ProcessUploadedFile(model);

                var    userId    = User.FindFirstValue(ClaimTypes.NameIdentifier);
                Advert newAdvert = new Advert
                {
                    UserId            = userId,
                    Title             = model.Title,
                    Category          = model.Category,
                    ProductIsNew      = model.ProductIsNew,
                    Price             = model.Price,
                    IsNegotiatedPrice = model.IsNegotiatedPrice,
                    Description       = model.Description,
                    PhotoPath         = uniqueFileName,
                    DateStartTime     = DateTime.Now,
                    City  = model.City,
                    Phone = model.Phone
                };

                _context.Add(newAdvert);
                _context.SaveChanges();
                return(RedirectToAction("Details", "Home", new { Id = newAdvert.Id }));
            }

            return(View());
        }
        public void CreatePost_Should_InvokeAdvertServiceMethod_CreateAdvert_Once_WhenModelStateIsValid()
        {
            // Arrange
            var context  = new Mock <HttpContextBase>();
            var identity = new GenericIdentity("*****@*****.**");

            identity.AddClaim(new Claim("http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier", "1"));
            var principal = new GenericPrincipal(identity, new[] { "user" });

            context.Setup(s => s.User).Returns(principal);

            var model = new AdvertCreateViewModel();
            IEnumerable <HttpPostedFileBase> uploadedFiles = null;

            var mockedAdvertService       = new Mock <IAdvertService>();
            var mockedMappingService      = new Mock <IMappingService>();
            var mockedCityService         = new Mock <ICityService>();
            var mockedVehicleModelService = new Mock <IVehicleModelService>();

            mockedAdvertService.Setup(a => a.CreateAdvert(It.IsAny <Advert>(), It.IsAny <IEnumerable <HttpPostedFileBase> >()));

            var advertController = new AdvertController(
                mockedAdvertService.Object,
                mockedMappingService.Object,
                mockedVehicleModelService.Object,
                mockedCityService.Object);

            advertController.ControllerContext = new ControllerContext(context.Object, new RouteData(), advertController);

            // Act
            advertController.Create(model, uploadedFiles);

            // Assert
            mockedAdvertService.Verify(a => a.CreateAdvert(It.IsAny <Advert>(), It.IsAny <IEnumerable <HttpPostedFileBase> >()), Times.Once);
        }
        public void Create_Post_Should_ThrowArgumentNullException_WhenModelParameterIsNull()
        {
            // Arrange
            var context  = new Mock <HttpContextBase>();
            var identity = new GenericIdentity("*****@*****.**");

            identity.AddClaim(new Claim("http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier", "1"));
            var principal = new GenericPrincipal(identity, new[] { "user" });

            context.Setup(s => s.User).Returns(principal);

            AdvertCreateViewModel            model         = null;
            IEnumerable <HttpPostedFileBase> uploadedFiles = null;

            var mockedAdvertService       = new Mock <IAdvertService>();
            var mockedMappingService      = new Mock <IMappingService>();
            var mockedCityService         = new Mock <ICityService>();
            var mockedVehicleModelService = new Mock <IVehicleModelService>();

            mockedAdvertService.Setup(a => a.CreateAdvert(It.IsAny <Advert>(), It.IsAny <IEnumerable <HttpPostedFileBase> >()));

            var advertController = new AdvertController(
                mockedAdvertService.Object,
                mockedMappingService.Object,
                mockedVehicleModelService.Object,
                mockedCityService.Object);

            advertController.ControllerContext = new ControllerContext(context.Object, new RouteData(), advertController);

            // Act & Assert
            Assert.Throws <ArgumentNullException>(() => advertController.Create(model, uploadedFiles));
        }
Пример #5
0
        public void CreateAdvert(AdvertCreateViewModel advertViewModel, string userId)
        {
            Advert advert = mapper.Map <Advert>(advertViewModel);

            advert.AppUserId = userId;
            context.Adverts.Add(advert);
            context.SaveChanges();
        }
Пример #6
0
        public IActionResult Create(AdvertCreateViewModel advertViewModel)
        {
            if (ModelState.IsValid)
            {
                var userId = User.FindFirstValue(ClaimTypes.NameIdentifier);
                advertRepository.CreateAdvert(advertViewModel, userId);

                flashMessage.Confirmation("Ogłoszenie zostało dodane");
                return(RedirectToAction(nameof(AdvertController.List), nameof(AdvertController).Replace("Controller", "")));
            }
            else
            {
                return(View(advertViewModel));
            }
        }
        public void CreatePost_Should_RedirectToDefaultViewWithCorrectParameterModel_WhenThereIsExceptionOnCreatingInDatabase()
        {
            // Arrange
            var mockedContext = new Mock <HttpContextBase>();
            var identity      = new GenericIdentity("*****@*****.**");

            identity.AddClaim(new Claim("http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier", "1"));
            var principal = new GenericPrincipal(identity, new[] { "user" });

            mockedContext.Setup(s => s.User).Returns(principal);

            var model = new AdvertCreateViewModel();
            IEnumerable <HttpPostedFileBase> uploadedFiles = null;

            var mockedAdvertService       = new Mock <IAdvertService>();
            var mockedMappingService      = new Mock <IMappingService>();
            var mockedCityService         = new Mock <ICityService>();
            var mockedVehicleModelService = new Mock <IVehicleModelService>();

            mockedAdvertService.Setup(a => a.CreateAdvert(It.IsAny <Advert>(), It.IsAny <IEnumerable <HttpPostedFileBase> >())).Throws(new Exception());

            var advertController = new AdvertController(
                mockedAdvertService.Object,
                mockedMappingService.Object,
                mockedVehicleModelService.Object,
                mockedCityService.Object);

            advertController.ControllerContext = new ControllerContext(mockedContext.Object, new RouteData(), advertController);

            // Act & Assert
            advertController
            .WithCallTo(c => c.Create(model, uploadedFiles))
            .ShouldRenderDefaultView()
            .WithModel <AdvertCreateViewModel>(x =>
            {
                Assert.IsNull(x.Title);
                Assert.AreEqual(x.VehicleModelId, 0);
                Assert.AreEqual(x.Year, 0);
                Assert.AreEqual(x.Price, 0);
                Assert.AreEqual(x.Power, 0);
                Assert.AreEqual(x.DistanceCoverage, 0);
                Assert.AreEqual(x.CityId, 0);
                Assert.IsNull(x.Description);
            });
        }
        private string ProcessUploadedFile(AdvertCreateViewModel model)
        {
            string uniqueFileName = null;

            if (model.Photos != null && model.Photos.Count > 0)
            {
                foreach (IFormFile photo in model.Photos)
                {
                    string uploadsFolder = Path.Combine(_hostEnvironment.WebRootPath, "images");
                    uniqueFileName = Guid.NewGuid() + "_" + photo.FileName;
                    string filePath = Path.Combine(uploadsFolder, uniqueFileName);
                    using var fileStream = new FileStream(filePath, FileMode.Create);
                    photo.CopyTo(fileStream);
                }
            }

            return(uniqueFileName);
        }
        public ActionResult Create(AdvertCreateViewModel model, IEnumerable <HttpPostedFileBase> uploadedFiles)
        {
            Guard.WhenArgument(model, nameof(model)).IsNull().Throw();

            if (!this.ModelState.IsValid)
            {
                return(this.View(model));
            }

            var advert = new Advert
            {
                Title            = model.Title,
                VehicleModelId   = model.VehicleModelId,
                UserId           = this.User.Identity.GetUserId(),
                Year             = model.Year,
                Price            = model.Price,
                Power            = model.Power,
                DistanceCoverage = model.DistanceCoverage,
                CityId           = model.CityId,
                Description      = model.Description,
            };

            try
            {
                advert.Title       = Sanitizer.GetSafeHtmlFragment(model.Title);
                advert.Description = Sanitizer.GetSafeHtmlFragment(model.Description);
                this.advertService.CreateAdvert(advert, uploadedFiles);
            }
            catch (Exception)
            {
                this.TempData["Notification"] = "Exception.";
                return(View(model));
            }


            this.TempData["Notification"] = "Successfully Created An Advert!!!";

            return(Redirect("/"));
        }
        public void CreatePost_Should_ReturnDefaultViewWithAdvertCreateViewModel_WhenModelStateIsNotValid()
        {
            // Arrange
            var model = new AdvertCreateViewModel();
            IEnumerable <HttpPostedFileBase> uploadedFiles = null;

            var mockedAdvertService       = new Mock <IAdvertService>();
            var mockedMappingService      = new Mock <IMappingService>();
            var mockedCityService         = new Mock <ICityService>();
            var mockedVehicleModelService = new Mock <IVehicleModelService>();

            var advertController = new AdvertController(
                mockedAdvertService.Object,
                mockedMappingService.Object,
                mockedVehicleModelService.Object,
                mockedCityService.Object);

            advertController.ModelState.AddModelError("Yolo", "Yolo");

            // Act & Assert
            advertController
            .WithCallTo(x => x.Create(model, uploadedFiles))
            .ShouldRenderDefaultView()
            .WithModel <AdvertCreateViewModel>(x =>
            {
                Assert.IsNull(x.Title);
                Assert.AreEqual(x.VehicleModelId, 0);
                Assert.AreEqual(x.Year, 0);
                Assert.AreEqual(x.Price, 0);
                Assert.AreEqual(x.Power, 0);
                Assert.AreEqual(x.DistanceCoverage, 0);
                Assert.AreEqual(x.CityId, 0);
                Assert.IsNull(x.Description);
            }
                                               );
        }