public void BuyWithCashTestWrongPrice() { //init var commandMock = new Mock <ICommandBus>(); var queryMock = new Mock <IQueryProcessor>(); const decimal wrongPrice = 12.2m; const decimal correctPrice = 13.2m; queryMock.Setup(processor => processor.ProcessQuery <GetPriceByFlavour, GetPriceByFlavourResponse>( It.Is <GetPriceByFlavour>(byFlavour => byFlavour.Flavour == "f1"))) .Returns(() => new GetPriceByFlavourResponse(correctPrice)) .Verifiable(); var paymentController = new PaymentController(commandMock.Object, queryMock.Object); var buy = new CanItemDto("f1", 1, wrongPrice); //act paymentController.BuyWithCash(buy); //verify commandMock.Verify(bus => bus.Send(It.Is <CashPayment>(payment => payment.AmountToPay == wrongPrice)), Times.Never); commandMock.Verify(bus => bus.Send(It.Is <EjectCan>(stock => stock.Flavour == buy.Flavour)), Times.Never); }
private bool GetPrice(CanItemDto can, out decimal?price) { price = _queryProcessor .ProcessQuery <GetPriceByFlavour, GetPriceByFlavourResponse>(new GetPriceByFlavour(can.Flavour)).Price; return(!price.HasValue); }
public void BuyWithCredit([FromBody] CanItemDto can) { if (GetPrice(can, out var price)) { return; } Debug.Assert(price != null, nameof(price) + " != null"); _commandBus.Send(new CreditCardPayment(price.Value)); _commandBus.Send(new EjectCan(can.Flavour)); }
public void AddStockTest() { var commandMock = new Mock <ICommandBus>(); var queryMock = new Mock <IQueryProcessor>(); var vendingController = new VendingController(commandMock.Object, queryMock.Object); var add = new CanItemDto("f1", 1, 1); vendingController.AddStock(add); commandMock.Verify(bus => bus.Send(It.Is <AddStock>(stock => stock.Flavour == add.Flavour && stock.Price == add.Price && stock.Quantity == add.Quantity)), Times.Once); }
public void AddStock([FromBody] CanItemDto can) { _commandBus.Send(new AddStock(can.Flavour, can.Quantity, can.Price)); }