public void ValidateUserCarDto_Must_Validate_Dto_For_Edit_User_Car_Without_Errors() { //Arrange var dto = new AddOrEditUserCarDto { Id = 1, Name = "Test", ModelId = null, Year = 2015, Vin = "ABVGDTT0123456789", FuelType = FuelType.Benzine, EngineCapacity = 1.5f }; var repository = new Mock <IUserCarRepository>(); repository.Setup(act => act.Get(dto.Id.Value)).Returns(new UserCar()); _unitOfWorkMock.Setup(act => act.Repository <IUserCarRepository>()).Returns(repository.Object); //Act ValidationResult result = null; Assert.DoesNotThrow(() => result = _manager.ValidateUserCarDto(dto)); //Assert Assert.NotNull(result); Assert.False(result.HasErrors); }
public void ValidateUserCarDto_Must_Throw_All_Possible_Error_When_Validate_Edit_User_Car_Dto() { //Arrange var dto = new AddOrEditUserCarDto { Id = 1, Name = null, ModelId = null, Year = 2015, Vin = "ABVGDTT012345678900", FuelType = FuelType.Unknown, EngineCapacity = 1.5f }; var repository = new Mock <IUserCarRepository>(); repository.Setup(act => act.Get(dto.Id.Value)).Returns((UserCar)null); _unitOfWorkMock.Setup(act => act.Repository <IUserCarRepository>()).Returns(repository.Object); //Act ValidationResult result = null; Assert.DoesNotThrow(() => result = _manager.ValidateUserCarDto(dto)); //Assert Assert.NotNull(result); Assert.True(result.HasErrors); Assert.AreEqual(ValidationErrorResources.UserCarNotFound, result.Errors[0]); Assert.AreEqual(ValidationErrorResources.FuelTypeNotFound, result.Errors[1]); Assert.AreEqual(ValidationErrorResources.VinNumberIsIncorrect, result.Errors[2]); }
private void ValidateCommonFieldsForAddOrEditUserDto(AddOrEditUserCarDto dto, ValidationResult validationResult) { if (dto.FuelType == FuelType.Unknown) { validationResult.AddError(ValidationErrorResources.FuelTypeNotFound); } if (dto.Vin.Length != 17) { validationResult.AddError(ValidationErrorResources.VinNumberIsIncorrect); } }
public void EditCar(AddOrEditUserCarDto dto, string currentUserId) { UserManager.IsUserInRegularRole(currentUserId); var validationResult = _validationManager.ValidateUserCarDto(dto); if (validationResult.HasErrors) { throw new BusinessFaultException(validationResult.GetErrors()); } var repository = UnitOfWork.Repository <IUserCarRepository>(); var userCar = repository.Get(dto.Id.Value); if (userCar.User.ApplicationUser.Id != currentUserId) { throw new BusinessFaultException(BusinessLogicExceptionResources.CarDoesNotBelongToUser); } var isChanged = false; if (!userCar.Name.Equals(dto.Name)) { userCar.Name = dto.Name; isChanged = true; } if (!userCar.Vin.Equals(dto.Vin)) { userCar.Vin = dto.Vin; isChanged = true; } if (!userCar.Year.Equals(dto.Year)) { userCar.Year = dto.Year; isChanged = true; } if (!userCar.FuelType.Equals(dto.FuelType)) { userCar.FuelType = dto.FuelType; isChanged = true; } if (!userCar.EngineCapacity.Equals(dto.EngineCapacity)) { userCar.EngineCapacity = dto.EngineCapacity; isChanged = true; } if (isChanged) { userCar.Updated = DateTime.UtcNow; repository.Update(userCar); UnitOfWork.SaveChanges(); } }
private void ValidateEditUserCarDto(AddOrEditUserCarDto dto, ValidationResult validationResult) { if (dto.Id.HasValue) { var car = _unitOfWork.Repository <IUserCarRepository>().Get(dto.Id.Value); if (car == null) { validationResult.AddError(ValidationErrorResources.UserCarNotFound); } } else { validationResult.AddError(ValidationErrorResources.UserCarNotFound); } ValidateCommonFieldsForAddOrEditUserDto(dto, validationResult); }
private void ValidateAddUserCarDto(AddOrEditUserCarDto dto, ValidationResult validationResult) { if (dto.ModelId.HasValue) { var model = _unitOfWork.Repository <ICarModelsRepository>().Get(dto.ModelId.Value); if (model == null) { validationResult.AddError(ValidationErrorResources.CarModelNotFound); } } else { validationResult.AddError(ValidationErrorResources.CarModelNotFound); } ValidateCommonFieldsForAddOrEditUserDto(dto, validationResult); }
public void AddCar(AddOrEditUserCarDto dto, string currentUserId) { UserManager.IsUserInRegularRole(currentUserId); var user = UserManager.CheckAndGet(currentUserId); var validationResult = _validationManager.ValidateUserCarDto(dto); if (validationResult.HasErrors) { throw new BusinessFaultException(validationResult.GetErrors()); } var userCar = Mapper.Map <UserCar>(dto); userCar.Model = UnitOfWork.Repository <ICarModelsRepository>().Get(dto.ModelId.Value); user.UserProfile.Cars.Add(userCar); UnitOfWork.SaveChanges(); }
public void AddCar_Must_Add_Car_To_User() { //Arrange var userId = "1"; var user = new ApplicationUser { Id = userId, UserProfile = new UserProfile { Cars = new List <UserCar>() } }; var dto = new AddOrEditUserCarDto { Name = "Test", ModelId = 1, Year = 2015, Vin = "0123456789ABCDEFG", FuelType = FuelType.Diesel, EngineCapacity = 2.0f }; var validationResult = new ValidationResult("test"); _userManagerMock.Setup(act => act.IsUserInRegularRole(userId)); _userManagerMock.Setup(act => act.CheckAndGet(userId)).Returns(user); _validationManagerMock.Setup(act => act.ValidateUserCarDto(dto)).Returns(validationResult); var repository = new Mock <ICarModelsRepository>(); repository.Setup(act => act.Get(dto.ModelId.Value)).Returns(new CarModel()); _unitOfWorkMock.Setup(act => act.Repository <ICarModelsRepository>()).Returns(repository.Object); //Act Assert.DoesNotThrow(() => _manager.AddCar(dto, userId)); //Assert _validationManagerMock.Verify(act => act.ValidateUserCarDto(dto), Times.Once); repository.Verify(act => act.Get(dto.ModelId.Value), Times.Once); _unitOfWorkMock.Verify(act => act.Repository <ICarModelsRepository>(), Times.Once); _unitOfWorkMock.Verify(act => act.SaveChanges(), Times.Once); }
public void EditCar_Must_Throw_Exception_When_Dto_Not_Pass_Validation() { //Arrange var userId = "1"; var dto = new AddOrEditUserCarDto(); var validationResult = new ValidationResult("test"); validationResult.AddError("test"); _userManagerMock.Setup(act => act.IsUserInRegularRole(userId)); _validationManagerMock.Setup(act => act.ValidateUserCarDto(dto)).Returns(validationResult); //Act var exception = Assert.Throws <BusinessFaultException>(() => _manager.EditCar(dto, userId)); //Assert _validationManagerMock.Verify(act => act.ValidateUserCarDto(dto), Times.Once); Assert.AreEqual(validationResult.GetErrors(), exception.Message); }
public ValidationResult ValidateUserCarDto(AddOrEditUserCarDto dto) { if (dto == null) { throw new ArgumentNullException(ArgumentExceptionResources.AddUserCarDtoNotFound); } ValidationResult validationResult; if (!dto.Id.HasValue) { validationResult = new ValidationResult("Добавление машины пользователя"); ValidateAddUserCarDto(dto, validationResult); } else { validationResult = new ValidationResult("Редактирование машины пользователя"); ValidateEditUserCarDto(dto, validationResult); } return(validationResult); }
public void EditCar_Must_Throw_Exception_When_Car_Not_Found() { //Arrange var userId = "1"; var dto = new AddOrEditUserCarDto { Id = 1 }; var validationResult = new ValidationResult("test"); var userCar = new UserCar { User = new UserProfile { ApplicationUser = new ApplicationUser { Id = "another" } } }; _userManagerMock.Setup(act => act.IsUserInRegularRole(userId)); _validationManagerMock.Setup(act => act.ValidateUserCarDto(dto)).Returns(validationResult); var userCarRepository = new Mock <IUserCarRepository>(); userCarRepository.Setup(act => act.Get(dto.Id.Value)).Returns(userCar); _unitOfWorkMock.Setup(act => act.Repository <IUserCarRepository>()).Returns(userCarRepository.Object); //Act var exception = Assert.Throws <BusinessFaultException>(() => _manager.EditCar(dto, userId)); //Assert Assert.AreEqual(BusinessLogicExceptionResources.CarDoesNotBelongToUser, exception.Message); _validationManagerMock.Verify(act => act.ValidateUserCarDto(dto), Times.Once); userCarRepository.Verify(act => act.Get(dto.Id.Value), Times.Once); _unitOfWorkMock.Verify(act => act.Repository <IUserCarRepository>(), Times.Once); }
public void EditCar_Must_Edit_User_Car() { //Arrange var userId = "1"; var dto = new AddOrEditUserCarDto { Id = 1, Name = "test", Year = 2006, Vin = "0123456789ABCDEFG", FuelType = FuelType.Benzine, EngineCapacity = 1.6f }; var validationResult = new ValidationResult("test"); var userCar = UserCarUtils.Create(1, "TEST", "modelName", "markName", userId); _userManagerMock.Setup(act => act.IsUserInRegularRole(userId)); _validationManagerMock.Setup(act => act.ValidateUserCarDto(dto)).Returns(validationResult); var userCarRepository = new Mock <IUserCarRepository>(); userCarRepository.Setup(act => act.Get(dto.Id.Value)).Returns(userCar); userCarRepository.Setup(act => act.Update(userCar)); _unitOfWorkMock.Setup(act => act.Repository <IUserCarRepository>()).Returns(userCarRepository.Object); //Act Assert.DoesNotThrow(() => _manager.EditCar(dto, userId)); //Assert _validationManagerMock.Verify(act => act.ValidateUserCarDto(dto), Times.Once); userCarRepository.Verify(act => act.Get(dto.Id.Value), Times.Once); _unitOfWorkMock.Verify(act => act.Repository <IUserCarRepository>(), Times.Once); userCarRepository.Verify(act => act.Update(userCar), Times.Once); _unitOfWorkMock.Verify(act => act.SaveChanges(), Times.Once); }
public IHttpActionResult EditCar(AddOrEditUserCarDto dto) { return(CallBusinessLogicAction(() => _manager.EditCar(dto, User.Identity.GetUserId()))); }