Inheritance: IMessage
        public void Handle_ShipOrderArrived_SendToFedEx()
        {
            Test.Initialize();

            var shipOrder = new ShipOrder {Order = 1};
            Test.Saga<BookShipmentPolicy>()
                .ExpectSend<ShipWithFedEx>(m => m.Order == shipOrder.Order)
                .When(saga => saga.Handle(shipOrder));
        }
        public void Handle_ShipOrderArrived_TimeoutShouldBeSet()
        {
            Test.Initialize();

            var shipOrder = new ShipOrder{Order = 1};
            Test.Saga<BookShipmentPolicy>()
                .ExpectTimeoutToBeSetIn<FedExTimeout>((state,span) => span == TimeSpan.FromSeconds(5))
                .When(saga => saga.Handle(shipOrder));
        }
        public void When_shiporder_received_should_send_fedex_message()
        {
            //NOTE: This initializes e.g. the bus
            Test.Initialize();

            var shipOrder = new ShipOrder {OrderId = Guid.NewGuid()};

            Test.Saga<ShippingSaga>()
                .ExpectSend<ShipToFedex>(s => s.OrderId == shipOrder.OrderId)
                .When(s => s.Handle(shipOrder));
        }
        public void When_fedex_times_out_should_send_timeout()
        {
            //NOTE: This initializes e.g. the bus
            Test.Initialize();

            var shipOrder = new ShipOrder { OrderId = Guid.NewGuid() };

            Test.Saga<ShippingSaga>()
                .ExpectTimeoutToBeSetIn<FedexTimedout>((f, t) =>t == TimeSpan.FromSeconds(15))
                .When(s => s.Handle(shipOrder));
        }
        public void Handle_FedExTimesOut_SendToUps()
        {
            Test.Initialize();

            var fedExTimeout = new FedExTimeout();
            var shipOrder = new ShipOrder {Order = 1};
            Test.Saga<BookShipmentPolicy>()
                .When(policy => policy.Handle(shipOrder))
                .ExpectSend<ShipWithUps>(m => m.Order == shipOrder.Order)
                .When(saga => saga.Timeout(fedExTimeout));
        }