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
     });
 }
Esempio n. 3
0
        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);
        }