コード例 #1
0
        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.");
            }
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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();
        }
コード例 #4
0
        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);
        }
コード例 #5
0
        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>();
        }
コード例 #6
0
        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();
        }
コード例 #7
0
        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();
        }