public void HandleOrderUsingExtensionAndTriggers(Order order) { var context = new PaymentGuardContext(); var triggerToOrderStatePaid = "triggerToOrderStatePaid"; var state = order.State.AsState(b => { b.From(OrderState.Initial).To(OrderState.Paid) .Changing(OnTransitioningStateFromInitialToPaidHandler); b.TriggerTo(OrderState.Paid, triggerToOrderStatePaid); }); StateMachineManager.Trigger(triggerToOrderStatePaid); //Assert.Equal(OrderState.Paid, order.State); }
public void HandleOrder(Order order) { var context = new PaymentGuardContext(); var state = new State <Order, OrderState>(order, a => a.State) .Define(b => { b.From(OrderState.Initial).To(OrderState.Paid) .Changing(OnTransitioningStateFromInitialToPaidHandler) .Changed(OnTransitionedStateFromInitialToPaidHandler); b.From(OrderState.Paid).To(OrderState.Processed); b.From(OrderState.Processed).To(OrderState.Delivered); b.OnEnter(OrderState.Paid, Guards <OrderState> .From(context, ValidateRequest, PayToPaymentGateway, PersistOrderToRepository )); b.DisableSameStateTransitionFor(OrderState.Paid); }); var hasChangedState = state.ChangeTo(OrderState.Paid); //Assert.Equal(OrderState.Paid, order.State); }
private void PersistOrderToRepository(PaymentGuardContext context) { context.Continue = true; }
private void PayToPaymentGateway(PaymentGuardContext context) { context.Continue = true; }
private void ValidateRequest(PaymentGuardContext context) { context.Continue = true; }