Ejemplo n.º 1
0
        public async Task CalculatePriceAsync_WhenRideIsASoloRide_ReturnsTheCorrectPrice()
        {
            decimal distance        = 10;
            decimal calculatedPrice = 100;

            _googleMapsApiService.GetDistanceInKmAsync(Arg.Any <string>(), Arg.Any <string>())
            .ReturnsForAnyArgs(distance);

            _soloRidePriceStrategy.CalculatePrice(distance).Returns(calculatedPrice);
            _priceStrategyFactory.GetPriceStrategy(Arg.Any <RideType>()).Returns(_soloRidePriceStrategy);

            decimal price = await _rideService.CalculatePriceAsync(_anAddress, _anAddress, RideType.SoloRide);

            Assert.That(price, Is.EqualTo(calculatedPrice));
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Calculates the distance between two addresses and returns the distance.
        /// </summary>
        /// <param name="first">The first address.</param>
        /// <param name="second">The second address.</param>
        /// <returns>The distance between the two addresses.</returns>
        private async Task <decimal> GetDistanceInKilometersAsync(Address first, Address second)
        {
            //Validate the addresses
            var firstAsString       = first.ToString();
            var secondAsString      = second.ToString();
            var validateOrigin      = _googleMapsApiService.ValidateAddressAsync(first);
            var validateDestination = _googleMapsApiService.ValidateAddressAsync(second);
            await Task.WhenAll(validateOrigin, validateDestination);

            //Validation ok (otherwise an exception would be thrown above)
            var distanceInKm = await _googleMapsApiService.GetDistanceInKmAsync(firstAsString, secondAsString);

            return(distanceInKm);
        }