コード例 #1
0
        public PassengerFlightLogistics Process(PassengerProcessorContext passengerProcessorContext)
        {
            var result = new PassengerFlightLogistics()
            {
                ExpectedBaggage = passengerProcessorContext.Passenger.AllowedBags
            };

            if (passengerProcessorContext.Passenger.IsUsingLoyaltyPoints)
            {
                var loyaltyPointsRedeemed = Convert.ToInt32(Math.Ceiling(passengerProcessorContext.FlightRoute.BasePrice));

                passengerProcessorContext.Passenger.LoyaltyPoints -= loyaltyPointsRedeemed;

                result.LoyaltyPointsRedeemed = loyaltyPointsRedeemed;
            }
            else
            {
                result.LoyaltyPointsAccrued = passengerProcessorContext.FlightRoute.LoyaltyPointsGained;

                result.ProfitFromFlight += passengerProcessorContext.FlightRoute.BasePrice;
            }

            return(result);
        }
コード例 #2
0
        public void ProcessorReturnsExpectedResults(IPassengerProcessor processor, PassengerProcessorContext passengerProcessorContext, PassengerFlightLogistics expectedPassengerFlightLogistics)
        {
            var result = processor.Process(passengerProcessorContext);

            result.ExpectedBaggage.ShouldBe(expectedPassengerFlightLogistics.ExpectedBaggage);
            result.ProfitFromFlight.ShouldBe(expectedPassengerFlightLogistics.ProfitFromFlight);
            result.LoyaltyPointsRedeemed.ShouldBe(expectedPassengerFlightLogistics.LoyaltyPointsRedeemed);
            result.LoyaltyPointsAccrued.ShouldBe(expectedPassengerFlightLogistics.LoyaltyPointsAccrued);
        }