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);
        }
        public void SetUp()
        {
            _passengerProcessorFactory = Substitute.For <IPassengerProcessorFactory>();

            _passengerProcessorContextProvider = Substitute.For <IPassengerProcessorContextProvider>();

            _passengerProcessor = Substitute.For <IPassengerProcessor>();

            var passengerFlightLogistics = AnyPassengerFlightLogistics();

            _passengerProcessor.Process(Arg.Any <PassengerProcessorContext>()).Returns(passengerFlightLogistics);

            var passengerProcessorContext = new PassengerProcessorContext()
            {
                FlightRoute = FlightRoute,
                Passenger   = new Passenger()
            };

            _passengerProcessorContextProvider.GetPassengerProcessorContext(Arg.Any <Passenger>(), FlightRoute).Returns(passengerProcessorContext);

            _passengerProcessorFactory.GetProcessor(Arg.Any <PassengerType>()).Returns(_passengerProcessor);

            _scheduledFlightSummaryCalculator = new ScheduledFlightSummaryCalculator(_passengerProcessorFactory, _passengerProcessorContextProvider);
        }