public JourneyFareTestController()
        {
            var builder = new DbContextOptionsBuilder <ApiDbContext>();

            builder.UseInMemoryDatabase("TestDB");
            DbContextOptions <ApiDbContext> options = builder.Options;
            IFareCalculator service = new FareCalculatorService(options);

            jc = new JourneyFareController(service);
        }
        public void TestCalculate()
        {
            IFareCalculatorService service = new FareCalculatorService(_fakeTaxiRateRepository);

            var result = service.Calculate(new RideHistory
            {
                NumberOfMinutesIdleOrGoingAboveSixMph = 5,
                TotalMilesGoingBelowSixMph            = 2,
                StartDateTime = DateTime.Parse("10/08/2010 05:30:00 pm")
            });

            Assert.AreEqual(result, 9.75m);
        }
Esempio n. 3
0
        public void NightSurchargeDuringDayTimeTest()
        {
            //Arrange
            FareCalculatorService calculator        = new FareCalculatorService();
            PrivateObject         privateCalculator = new PrivateObject(calculator);
            var date = new DateTime(2018, 9, 20, 7, 0, 0);

            //Act
            var fare = privateCalculator.Invoke("NightTimeSurcharge", date);

            //Assert
            Assert.AreEqual((decimal)fare, 0);
        }
Esempio n. 4
0
        public void DistanceUnitsBelowSixMphCalculationTest()
        {
            //Arrange
            FareCalculatorService calculator        = new FareCalculatorService();
            PrivateObject         privateCalculator = new PrivateObject(calculator);
            var distanceUnits = 3;

            //Act
            var fare = privateCalculator.Invoke("PriceFromDistanceUnitsBelowSixMph", distanceUnits);

            //Assert
            Assert.AreEqual((decimal)fare, (decimal)1.05);
        }
Esempio n. 5
0
        public void MinutesAboveSixMphCalculationTest()
        {
            //Arrange
            FareCalculatorService calculator        = new FareCalculatorService();
            PrivateObject         privateCalculator = new PrivateObject(calculator);
            var minutes = 10;

            //Act
            var fare = privateCalculator.Invoke("PriceFromMinutesAboveSixMph", minutes);

            //Assert
            Assert.AreEqual((decimal)fare, (decimal)3.50);
        }
Esempio n. 6
0
        //[Route("CalculateFare")]
        public JsonResult CalculateFare(FareCalculatorViewModel model)
        {
            var calculator = new FareCalculatorService();
            //Call service method with Model

            var dataModel = new FareCalculatorDataModel
            {
                Date = model.Date,
                Time = model.Time,
                DistanceUnitsBelowSixMph = model.DistanceUnitsBelowSixMph,
                MinutesAboveSixMph       = model.MinutesAboveSixMph,
            };

            return(Json(new { totalFare = calculator.CalculateFare(dataModel) }, JsonRequestBehavior.AllowGet));
        }
Esempio n. 7
0
        public void PeakSurchargeWeekendOffPeakTimeTest()
        {
            //Arrange
            FareCalculatorService calculator        = new FareCalculatorService();
            PrivateObject         privateCalculator = new PrivateObject(calculator);

            // Is a Saturday
            var date = new DateTime(2018, 9, 22, 21, 0, 0);

            //Act
            var fare = privateCalculator.Invoke("PeakTimeSurcharge", date, date);

            //Assert
            Assert.AreEqual(0, (decimal)fare);
        }
Esempio n. 8
0
        public void CalculateFareTest()
        {
            //Arrange
            FareCalculatorService   calculator = new FareCalculatorService();
            FareCalculatorDataModel model      = new FareCalculatorDataModel
            {
                Date = new DateTime(2018, 9, 20, 16, 0, 0), // Thursday
                Time = new DateTime(2018, 9, 20, 16, 0, 0), // Peak Time
                DistanceUnitsBelowSixMph = 10,
                MinutesAboveSixMph       = 5,
            };

            //Act
            var fare = calculator.CalculateFare(model);

            //Assert
            Assert.AreEqual((decimal)fare, (decimal)9.75);
        }