private async Task <ParsedDriveUpdateData> ParseModelData(string from, string to, int carId, string dateAsString) { try { City cityFrom = await this.citiesService.GetOrCreateAsync(from); City cityTo = await this.citiesService.GetOrCreateAsync(to); Car car = this.carsService.GetById(carId); DateTime date = DateTime.ParseExact(dateAsString, "dd/MM/yyyy - HH:mm", CultureInfo.CurrentCulture); var parsedData = new ParsedDriveUpdateData() { From = cityFrom, To = cityTo, Car = car, Date = date }; return(parsedData); } catch (FormatException dateException) { // Log exception throw new InvalidDateFormatException("Given was format invalid date."); } }
public async Task <bool> UpdateAsync(DriveCreateEditViewModel model, ParsedDriveUpdateData data, int driveId) { Require.ThatObjectIsNotNull(model); Require.ThatObjectIsNotNull(data); Require.ThatIntIsPositive(driveId); Drive drive = this.drives.GetById(driveId); if (drive != null) { if (data.From != null && data.To != null && data.Car != null) { this.MapDrive(model, data, drive); await this.drives.UpdateAsync(drive); return(true); } return(false); } return(false); }
public async Task Update_GivenDataWithNullCar_ShouldReturnFalse() { // arrange DriveCreateEditViewModel model = new DriveCreateEditViewModel(); ParsedDriveUpdateData data = new ParsedDriveUpdateData() { From = new City(), To = new City(), Car = null, Date = new DateTime() }; int driveId = 1; Mock <IDbRepository <Drive> > mockRepository = new Mock <IDbRepository <Drive> >(); mockRepository.Setup(m => m.GetById(It.Is <int>(i => i == driveId))) .Returns(new Drive() { Id = driveId }); IDrivesService service = new DrivesService(mockRepository.Object, null, null); // act var result = await service.UpdateAsync(model, data, driveId); // assert result.Should().BeFalse(); }
private async Task <ParsedDriveCreateData> ParseModelDataCreate(string from, string to, int carId, string dateAsString, int driverId) { ParsedDriveUpdateData data = await this.ParseModelData(from, to, carId, dateAsString); ParsedDriveCreateData parsedData = this.mapper.Map <ParsedDriveCreateData>(data); parsedData.Driver = this.GetDriver(driverId); return(parsedData); }
public void Update_GivenNegativeDriveId_ShouldThrowNegativeIntException() { // arrange var model = new DriveCreateEditViewModel(); var data = new ParsedDriveUpdateData(); int driveId = -1; IDrivesService service = new DrivesService(null, null, null); // act Func <Task> action = async() => await service.UpdateAsync(model, data, driveId); // assert action.Should().ThrowExactly <NegativeIntException>(); }
public async Task Update_GivenNonExistingDriveId_ShouldReturnFalse() { // arrange var model = new DriveCreateEditViewModel(); var data = new ParsedDriveUpdateData(); int driveId = 10; Mock <IDbRepository <Drive> > mockRepository = new Mock <IDbRepository <Drive> >(); mockRepository.Setup(m => m.GetById(It.Is <int>(i => i == driveId))) .Returns <Drive>(null); IDrivesService service = new DrivesService(mockRepository.Object, null, null); // act bool result = await service.UpdateAsync(model, data, driveId); // assert result.Should().BeFalse(); }
public async Task Update_GivenValidModelDataAndDriveId_ShouldReturnTrue() { // arrange DriveCreateEditViewModel model = new DriveCreateEditViewModel(); ParsedDriveUpdateData data = new ParsedDriveUpdateData() { From = new City(), To = new City(), Car = new Car(), Date = new DateTime() }; int driveId = 1; Mock <IDbRepository <Drive> > mockRepository = new Mock <IDbRepository <Drive> >(); mockRepository.Setup(m => m.GetById(It.Is <int>(i => i == driveId))) .Returns(new Drive() { Id = driveId }); IMapper mapper = new Mapper(new MapperConfiguration(cfg => cfg.CreateMap <Drive, DriveCreateEditViewModel>() .ForMember(dest => dest.From, opt => opt.MapFrom(source => source.From.Name)) .ForMember(dest => dest.To, opt => opt.MapFrom(source => source.To.Name)) .ForMember(dest => dest.Cars, opt => opt.Ignore()) .ForMember(dest => dest.DateTime, opt => opt.MapFrom(source => source.DateTime.ToString("o"))))); IDrivesService service = new DrivesService(mockRepository.Object, mapper, null); // act var result = await service.UpdateAsync(model, data, driveId); // assert result.Should().BeTrue(); }