public void WhenCanAddFillupWithInvalidVehicleId_ThenReturnsValidationResult()
        {
            var fillUp = new FillupEntryFormModel
                             {
                                 Date = DateTime.UtcNow,
                                 TotalUnits = 10,
                                 PricePerUnit = 1.0,
                             };

            var fillUps = new List<FillupEntry>();
            _vehicleRepo
                .Setup(r => r.GetVehicle(DefaultUserId, DefaultVehicleId))
                .Returns((Vehicle)null);

            _fillupRepo
                .Setup(x => x.GetFillups(DefaultVehicleId))
                .Returns(fillUps);

            var handler = new CanAddFillup(_vehicleRepo.Object, _fillupRepo.Object);
            var actual = handler.Execute(DefaultUserId, DefaultVehicleId, fillUp);

            var actualList = new List<ValidationResult>(actual);
            Assert.Equal(1, actualList.Count);
            Assert.Contains("not found", actualList[0].Message, StringComparison.CurrentCultureIgnoreCase);
        }
        public void WhenCanAddFillup_ThenReturnsEmptyCollection()
        {
            var fillUp = new FillupEntryFormModel
                             {
                                 Date = DateTime.UtcNow,
                                 TotalUnits = 10,
                                 PricePerUnit = 1.0,
                             };

            _vehicleRepo
                .Setup(vr => vr.GetVehicle(DefaultUserId, DefaultVehicleId))
                .Returns(new Vehicle { VehicleId = DefaultVehicleId, Name = "Vehicle" });

            _fillupRepo
                .Setup(x => x.GetFillups(It.IsAny<int>()))
                .Returns(new List<FillupEntry>());

            var handler = new CanAddFillup(_vehicleRepo.Object, _fillupRepo.Object);
            var actual = handler.Execute(DefaultUserId, DefaultVehicleId, fillUp);

            Assert.Empty(actual);
        }
 public PostFillUpsController(CanAddFillup canAddFillup, AddFillupToVehicle addFillupToVehicle)
 {
     this.canAddFillup = canAddFillup;
     this.addFillupToVehicle = addFillupToVehicle;
 }
        public void WhenCanAddFillupWithInvalidFillupOdometer_ThenReturnsValidationResult()
        {
            var fillUp = new FillupEntryFormModel
                             {
                                 Date = DateTime.UtcNow,
                                 TotalUnits = 10,
                                 PricePerUnit = 1.0,
                                 Odometer = 500 //less than prior fillup
                             };

            var fillUps = new List<FillupEntry>
                              {
                                  new FillupEntry
                                      {
                                          FillupEntryId = 1,
                                          Date = DateTime.UtcNow.AddDays(-1),
                                          Odometer = 1000
                                      }
                              };

            _vehicleRepo
                .Setup(vr => vr.GetVehicle(DefaultUserId, DefaultVehicleId))
                .Returns(new Vehicle { VehicleId = DefaultVehicleId, Name = "Vehicle" });

            _fillupRepo
                .Setup(x => x.GetFillups(DefaultVehicleId))
                .Returns(fillUps);

            var handler = new CanAddFillup(_vehicleRepo.Object, _fillupRepo.Object);
            var actual = handler.Execute(DefaultUserId, DefaultVehicleId, fillUp);

            var actualList = new List<ValidationResult>(actual);
            Assert.Equal(1, actualList.Count);
            Assert.Contains("odometer ", actualList[0].Message, StringComparison.CurrentCultureIgnoreCase);
        }