public async Task Given_creating_order_state_When_order_created_Then_add_items_to_order_command_is_issued()
        {
            var calculator = new InMemoryPriceCalculator();
            var factory    = new BuyNowProcessStateFactory();
            var scenario   = ProcessScenario.New <BuyNowState>(new BuyNow(calculator), factory);

            var state = scenario.NewState(nameof(BuyNow.CreatingOrder), c => c.Without(d => d.ReserveId));

            calculator.Add(state.SkuId, new Money(100));

            await scenario.Given(state)
            .When(new OrderCreated(state.OrderId, 123, state.UserId, OrderStatus.Created))
            .Then(
                new AddItemToOrderCommand(state.OrderId,
                                          state.SkuId,
                                          state.Quantity,
                                          await calculator.CalculatePrice(state.SkuId, state.Quantity)))
            .Run()
            .CheckProducedCommands()
            .CheckOnlyStateNameChanged(nameof(BuyNow.AddingOrderItems));
        }
 public BuyNowProcess_tests()
 {
     _inMemoryPriceCalculator   = new InMemoryPriceCalculator();
     _buyNowProcessStateFactory = new BuyNowProcessStateFactory();
 }