Beispiel #1
0
        public void CanDrive_ShouldReturnFalse_WhenDateIsARestrictedDayAndTimeIsARestrictedTime()
        {
            var plateNumber         = "XXXX-XXX1";
            var mondayDate          = "16/09/2019";
            var restrictedTime      = "08:00";
            var drivingRestrictions = new List <DrivingRestriction>
            {
                new DrivingRestriction {
                    PlateNumber = "1",
                    NoDriveDay  = new NoDriveDay {
                        DayName = "MONDAY"
                    },
                    NoDriveTimes = new List <NoDriveTime> {
                        new NoDriveTime {
                            StartHour = DateTime.ParseExact("07:00:00", "hh:mm:ss", null),
                            EndHour   = DateTime.ParseExact("09:30:00", "hh:mm:ss", null)
                        }
                    }
                }
            };

            _repositoryMock.Setup(r => r.LoadDrivingRestrictions()).Returns(drivingRestrictions);

            var service = new DrivingControlService(_repositoryMock.Object);
            var result  = service.CanDrive(plateNumber, mondayDate, restrictedTime);

            Assert.False(result);
        }
 public ActionResult <string> VerifyDriving(DrivingModel model)
 {
     try
     {
         var canDrive = _drivingControlService.CanDrive(model.PlateNumber, model.Date, model.Time);
         return((canDrive)
             ? $"The plate number '{model.PlateNumber}' CAN be on the road." +
                $"\n{_drivingControlService.Message}"
             : $"The plate number '{model.PlateNumber}' CANNOT be on the road." +
                $"\n{_drivingControlService.Message}");
     }
     catch (Exception ex)
     {
         return(ex.Message);
     }
 }
Beispiel #3
0
        public void CanDrive_ShouldThrowAFormatException_WhenDateIsInvalid()
        {
            var plateNumber         = "XXXX-XXX1";
            var invalidDate         = "xx/xx/xxxx";
            var drivingRestrictions = new List <DrivingRestriction>
            {
                new DrivingRestriction {
                    PlateNumber = "1"
                }
            };

            _repositoryMock.Setup(r => r.LoadDrivingRestrictions()).Returns(drivingRestrictions);

            var service = new DrivingControlService(_repositoryMock.Object);

            Assert.Throws <FormatException>(() => service.CanDrive(plateNumber, invalidDate, null));
        }
Beispiel #4
0
        public void CanDrive_ShouldReturnTrue_WhenPlateNumberIsNotInDrivingRestrictions()
        {
            var plateNumber         = "XXXX-XXX";
            var drivingRestrictions = new List <DrivingRestriction>
            {
                new DrivingRestriction {
                    PlateNumber = "1",
                    NoDriveDay  = new NoDriveDay {
                        DayName = "MONDAY"
                    },
                    NoDriveTimes = new List <NoDriveTime>()
                }
            };

            _repositoryMock.Setup(r => r.LoadDrivingRestrictions()).Returns(drivingRestrictions);

            var service = new DrivingControlService(_repositoryMock.Object);
            var result  = service.CanDrive(plateNumber, null, null);

            Assert.True(result);
        }
Beispiel #5
0
        public void CanDrive_ShouldThrowAFormatException_WhenTimeIsInvalid()
        {
            var plateNumber         = "XXXX-XXX1";
            var date                = "16/09/2019";
            var invalidTime         = "xx:xx";
            var drivingRestrictions = new List <DrivingRestriction>
            {
                new DrivingRestriction {
                    PlateNumber = "1",
                    NoDriveDay  = new NoDriveDay {
                        DayName = "MONDAY"
                    }
                }
            };

            _repositoryMock.Setup(r => r.LoadDrivingRestrictions()).Returns(drivingRestrictions);

            var service = new DrivingControlService(_repositoryMock.Object);

            Assert.Throws <FormatException>(() => service.CanDrive(plateNumber, date, invalidTime));
        }