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); }
public InvalidRequest(CreateOrderCmd cmd) { Cmd = cmd; }