public Vehicle SaveVehicle(Vehicle vehicle) { var vehicleGreaterThanYearSpec = new VehicleIsGreaterThanRequiredYear(); if (!vehicleGreaterThanYearSpec.IsSatisfiedBy(vehicle)) { throw new VehicleNotGreaterThanRequiredYearException(vehicleGreaterThanYearSpec.RequiredYear); } var vehicleVinIsUniqueSpec = new VehicleVinIsUnique(_unitOfWork.Vehicles); if (!vehicleVinIsUniqueSpec.IsSatisfiedBy(vehicle)) { throw new DuplicateVehicleVinException(vehicle.VIN); } vehicle.VIN = vehicle.VIN?.ToUpper(); if (vehicle.Id == 0) { _unitOfWork.Vehicles.Add(vehicle); } _unitOfWork.SaveChanges(); UpdateSalePrice(vehicle.Id); return(vehicle); }
public void VehicleVinIsUniqueSpec_WhenUpdatingVehicleButNotVin_IsSatisfied_ReturnsTrue() { var vehicle = _vehicleRepo.GetById(1); vehicle.Year = 2015; var spec = new VehicleVinIsUnique(_vehicleRepo); var result = spec.IsSatisfiedBy(vehicle); Assert.True(result); }
public void VehicleVinIsUniqueSpec_WhenUpdatingVin_IsSatisfied_ReturnsTrue() { var vehicle = _vehicleRepo.GetById(1); vehicle.VIN = "new vin number for tests"; var spec = new VehicleVinIsUnique(_vehicleRepo); var result = spec.IsSatisfiedBy(vehicle); Assert.True(result); }
public void VehicleVinIsUniqueSpec_WhenSatisfied_ReturnsTrue() { var vehicle = new Vehicle { VIN = "1234-1234-NEW-TESTING" }; var spec = new VehicleVinIsUnique(_vehicleRepo); var result = spec.IsSatisfiedBy(vehicle); Assert.True(result); }
public void VehicleVinIsUniqueSpec_WhenNotSatisfied_ReturnsFalse() { var vehicle = new Vehicle { VIN = "1234-1234" }; var spec = new VehicleVinIsUnique(_vehicleRepo); var result = spec.IsSatisfiedBy(vehicle); Assert.False(result); }