public async Task SkuStock_take_When_adding_stock()
        {
            var id = Guid.NewGuid();
            TakeFromStockCommand cmd;

            var scenario = await AggregateScenario.New <SkuStock, SkuStockCommandsHandler>()
                           .Given(new SkuStockCreated(id, _skuId, 50, TimeSpan.FromMilliseconds(100)),
                                  new StockAdded(id, 10, "test batch 2"))
                           .When(cmd = new TakeFromStockCommand(id, 10))
                           .Then(new StockTaken(id, cmd.Quantity))
                           .Run()
                           .Check();

            //Aggregate_quantity_should_be_decreased_by_command_amount()
            Assert.Equal(60 - cmd.Quantity, scenario.Aggregate.Quantity);
        }
示例#2
0
        public async Task Given_sku_stock_with_amount_When_reserve_first_time()
        {
            var aggregateId = Guid.NewGuid();
            TakeFromStockCommand takeCommand;
            var scenario = await AggregateScenario.New <SkuStock, SkuStockCommandsHandler>()
                           .Given(new SkuStockCreated(aggregateId, Guid.NewGuid(), 50, TimeSpan.FromMilliseconds(100)),
                                  new StockAdded(aggregateId, 10, "test batch 2"))
                           .When(takeCommand = new TakeFromStockCommand(aggregateId, 5))
                           .Then(new StockTaken(takeCommand.StockId, takeCommand.Quantity))
                           .Run()
                           .Check();

            //Then_Aggregate_Quantity_should_be_reduced_by_take_amount()
            Assert.Equal(60 - takeCommand.Quantity, scenario.Aggregate.Quantity);
            //Then_no_future_events_should_be_made()
            Assert.Empty(scenario.Aggregate.FutureEvents);
            //Then_no_reservations_should_be_made()
            Assert.Empty(scenario.Aggregate.Reservations);
        }