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);
        }
示例#2
0
        private void HandleProductBought(ProductBought ev)
        {
            var item = new Stock(ev.Product, ev.Quantity, ev.Price);

            stock.Add(item);
            ev.EntityId = item.Id;
        }
示例#3
0
        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);
        }