public override async Task Assertions(object[] path, Unit state, CreateOrderCmd op, CreateOrderResult.ICreateOrderResult result)
        {
            var cmdInput      = path.OfType <CreateOrderCmdInput>().First();
            var paymentEffect = path.OfType <PaymentEffect>().First();

            var orderEffect = path.OfType <OrderEffect>().First();

            var k = (cmdInput, paymentEffect) switch
            {
                (CreateOrderCmdInput.ValidInput, PaymentEffect.Accepted) => OnValidInputAndPaymentAccepted(op, result),
                (CreateOrderCmdInput.ValidInput, PaymentEffect.Rejected) => OnValidInputAndPaymentRejected(op, result),
                (CreateOrderCmdInput.ValidInput, PaymentEffect.Exception) => OnValidInputAndExceptionThrown(op, result),
                (CreateOrderCmdInput.InvalidAmount, _) => OnInvalidInput(op, result),
                (CreateOrderCmdInput.InvalidClient, _) => OnInvalidInput(op, result),
                (CreateOrderCmdInput.InvalidRestaurant, _) => OnInvalidInput(op, result),
                _ => throw new ApplicationException("This needs to be exhaustive")
            };

            var j = (cmdInput, orderEffect) switch
            {
                (CreateOrderCmdInput.ValidInput, OrderEffect.Good) => OnValidInputAndPaymentAccepted2(op, result),
                (CreateOrderCmdInput.ValidInput, OrderEffect.Invalid) => OnValidInputAndPaymentRejected2(op, result),
                (CreateOrderCmdInput.ValidInput, OrderEffect.Exception) => OnValidInputAndExceptionThrown2(op, result),
                (CreateOrderCmdInput.InvalidAmount, _) => OnInvalidInput2(op, result),
                (CreateOrderCmdInput.InvalidClient, _) => OnInvalidInput2(op, result),
                (CreateOrderCmdInput.InvalidRestaurant, _) => OnInvalidInput2(op, result),
                _ => throw new ApplicationException("This needs to be exhaustive")
            };
        }
 private Unit OnInvalidInput2(CreateOrderCmd op, ICreateOrderResult result)
 {
     result.Match(created =>
     {
         Assert.True(false);
         return(created);
     }, notcreated =>
     {
         Assert.True(false);
         return(notcreated);
     }, invalidRequest =>
     {
         Assert.False(op.IsValid().Item1);
         return(invalidRequest);
     });
     return(Unit.Default);
 }
 private Unit OnValidInputAndPaymentAccepted(CreateOrderCmd op, CreateOrderResult.ICreateOrderResult result)
 {
     result.Match(created =>
     {
         Assert.True(op.IsValid().Item1);
         return(created);
     }, notCreated =>
     {
         Assert.True(false);
         return(notCreated);
     }, invalidRequest =>
     {
         Assert.True(false);
         return(invalidRequest);
     });
     return(Unit.Default);
 }
Пример #4
0
 public InvalidRequest(CreateOrderCmd cmd)
 {
     Cmd = cmd;
 }