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)); }
public void CreateAdvert(AdvertCreateViewModel advertViewModel, string userId) { Advert advert = mapper.Map <Advert>(advertViewModel); advert.AppUserId = userId; context.Adverts.Add(advert); context.SaveChanges(); }
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); } ); }