Ejemplo n.º 1
0
        public async Task EditByIdAsyncithWrongIdReturnsError()
        {
            var id    = 3;
            var first = new VehicleCreateInputModel
            {
                Make  = "Mazda",
                Model = "Z6",
                RegistrationNumber = "CA5554TX",
            };

            await this.VehiclesServiceMock.CreateAsync(first);

            var second = new VehicleCreateInputModel
            {
                Make  = "Opel",
                Model = "Corsa",
                RegistrationNumber = "CA2222TX",
            };

            var result = await this.VehiclesServiceMock.CreateAsync(second);

            var editModel = await this.VehiclesServiceMock.GetByIdAsync <VehicleEditViewModel>(id);

            var edit = new VehicleEditInputModel
            {
                Make  = "OpelEdited",
                Model = "Corsa",
                RegistrationNumber = "CA2222TX",
            };

            var exception = await Assert.ThrowsAsync <NullReferenceException>(() => this.VehiclesServiceMock.EditByIdAsync(id, edit));

            Assert.Equal(string.Format(string.Format(VehicleConstants.NullReferenceId, id)), exception.Message);
        }
Ejemplo n.º 2
0
        public async Task <VehicleEditViewModel> EditByIdAsync(int id, VehicleEditInputModel vehicleFromView)
        {
            var vehicleDeleteAfterEdit = await this.vehicleRepository
                                         .All()
                                         .FirstOrDefaultAsync(x => x.Id == id);

            if (vehicleDeleteAfterEdit == null)
            {
                throw new NullReferenceException(string.Format(VehicleConstants.NullReferenceId, id));
            }

            var newVehicle = vehicleFromView.To <Vehicle>();

            this.vehicleRepository.Delete(vehicleDeleteAfterEdit);
            await this.vehicleRepository.AddAsync(newVehicle);

            await this.vehicleRepository.SaveChangesAsync();

            return(newVehicle.To <VehicleEditViewModel>());
        }
Ejemplo n.º 3
0
        public async Task <IActionResult> Edit(int id, VehicleEditInputModel vehicleEdit)
        {
            if (!this.ModelState.IsValid)
            {
                return(this.View(AutoMapper.Mapper.Map <VehicleEditViewModel>(vehicleEdit)));
            }

            var checkForRegistrationNumber = await this.vehiclesService
                                             .GetAllAsync <VehicleEditViewModel>()
                                             .FirstOrDefaultAsync(x => x.RegistrationNumber == vehicleEdit.RegistrationNumber);

            // If vehicle with Registration Number exists and id's are different do not delete. Return existing view model
            if (checkForRegistrationNumber != null && checkForRegistrationNumber.Id != id)
            {
                this.ModelState.AddModelError(nameof(vehicleEdit.RegistrationNumber), string.Format(VehicleConstants.ArgumentExceptionRegistrationNumber, vehicleEdit.RegistrationNumber));
                return(this.View(AutoMapper.Mapper.Map <VehicleEditViewModel>(vehicleEdit)));
            }

            var result = await this.vehiclesService.EditByIdAsync(id, vehicleEdit);

            return(this.RedirectToAction(nameof(this.Index)));
        }
Ejemplo n.º 4
0
        public async Task EditByIdAsyncReturnsCorrect()
        {
            var id    = 2;
            var first = new VehicleCreateInputModel
            {
                Make  = "Mazda",
                Model = "Z6",
                RegistrationNumber = "CA5554TX",
            };

            await this.VehiclesServiceMock.CreateAsync(first);

            var second = new VehicleCreateInputModel
            {
                Make  = "Opel",
                Model = "Corsa",
                RegistrationNumber = "CA2222TX",
            };

            var result = await this.VehiclesServiceMock.CreateAsync(second);

            var editModel = await this.VehiclesServiceMock.GetByIdAsync <VehicleEditViewModel>(id);

            var edit = new VehicleEditInputModel
            {
                Make  = "OpelEdited",
                Model = "Corsa",
                RegistrationNumber = "CA2222TX",
            };

            var actual = await this.VehiclesServiceMock.EditByIdAsync(editModel.Id, edit);

            var vehicles = await this.DbContext.Vehicles.ToListAsync();

            Assert.Equal(edit.Make, actual.Make);
            Assert.Contains(vehicles, x => x.Make == edit.Make);
        }