public async Task Given_adding_order_items_state_When_order_item_added_Then_reserve_stock_command_is_issued() { var scenario = ProcessScenario.New <BuyNowState>(new BuyNow(_inMemoryPriceCalculator), _buyNowProcessStateFactory); var state = scenario.NewState(nameof(BuyNow.AddingOrderItems), c => c.Without(d => d.ReserveId)); _inMemoryPriceCalculator.Add(state.SkuId, new Money(100)); await scenario.Given(state) .When( new ItemAdded(state.OrderId, state.SkuId, state.Quantity, await _inMemoryPriceCalculator.CalculatePrice(state.SkuId, state.Quantity), 1)) .Then(new ReserveStockCommand(state.StockId, state.UserId, state.Quantity)) .Run() .CheckProducedCommands() .CheckOnlyStateNameChanged(nameof(BuyNow.Reserving)); }
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)); }