public ProductBuyingResult BuyProduct(ProductBuyingRequest request) { if (request == null) { throw new ArgumentNullException(nameof(request)); } ProductBought productBought = Create <ProductBought>(request); productBought.ProuctId = request.ProductToBuy.Id; var result = Create <ProductBuyingResult>(request); if (_productRepository.IsProductAvailable(request.ProductToBuy)) { result.PurchaseId = _productBuyingRepository.Save(productBought); result.StatusProductCode = ProductBuyingResultCode.Success; } else { result.StatusProductCode = ProductBuyingResultCode.GameIsNotAvailable; } return(result); }
private void HandleProductBought(ProductBought ev) { var item = new Stock(ev.Product, ev.Quantity, ev.Price); stock.Add(item); ev.EntityId = item.Id; }
public void ShouldSaveBoughtGame() { //Arrange ProductBought savedProductBought = null; _repositoryMock.Setup(x => x.Save(It.IsAny <ProductBought>())) .Callback <ProductBought>(product => { savedProductBought = product; }); //Act _processor.BuyProduct(_request); _repositoryMock.Verify(x => x.Save(It.IsAny <ProductBought>()), Times.Once); //Assert Assert.NotNull(savedProductBought); Assert.Equal(_request.FirstName, savedProductBought.FirstName); Assert.Equal(_request.LastName, savedProductBought.LastName); Assert.Equal(_request.Email, savedProductBought.Email); Assert.Equal(_request.Date, savedProductBought.Date); Assert.Equal(_request.ProductToBuy.Id, savedProductBought.ProuctId); }