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 static T Create <T>(ProductBuyingRequest request) where T : ProductBuyingBase, new() { return(new T() { FirstName = request.FirstName, LastName = request.LastName, Email = request.Email, Date = request.Date }); }
public ProductBuyingRequestProcessorTests() { _repositoryMock = new Mock <IProductBuyingRepository>(); _repositoryProductMock = new Mock <IProductRepository>(); //Arrange _request = new ProductBuyingRequest() { FirstName = "Jarek", LastName = "Bigaj", Email = "*****@*****.**", Date = DateTime.Now, ProductToBuy = new Product() { Id = 3 } }; _repositoryProductMock.Setup(x => x.IsProductAvailable(_request.ProductToBuy)) .Returns(() => { return(_isProductAvailable); }); _processor = new ProductBuyingRequestProcessor(_repositoryMock.Object, _repositoryProductMock.Object); }