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); }
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); }