public void UpdateStock_AddNew()
        {
            var newStock = new Stock();
            var addedStock = new Stock { Id = 1 };

            Mock<IDataRepositoryFactory> mockDataRepositoryFactory = new Mock<IDataRepositoryFactory>();
            mockDataRepositoryFactory.Setup(mock => mock.GetDataRepository<IStockRepository>().Add(newStock)).Returns(addedStock);

            StockManager manager = new StockManager(mockDataRepositoryFactory.Object);
            var resultedStock = manager.UpdateStock(newStock);

            Assert.AreEqual(addedStock, resultedStock);
        }
        public void UpdateStock_UpdateExisting()
        {
            var existingStock = new Stock { Id = 1 };
            var updatedStock = new Stock { Id = 1 };

            Mock<IDataRepositoryFactory> mockDataRepositoryFactory = new Mock<IDataRepositoryFactory>();
            mockDataRepositoryFactory.Setup(mock => mock.GetDataRepository<IStockRepository>().Update(existingStock)).Returns(updatedStock);

            StockManager manager = new StockManager(mockDataRepositoryFactory.Object);
            var resultedStock = manager.UpdateStock(existingStock);

            Assert.AreEqual(updatedStock, resultedStock);
        }
        public Stock UpdateStock(Stock stockItem)
        {
            return ExecuteFaultHandledOperation(() =>
            {
                IStockRepository stockRepository = _dataRepositoryFactory.GetDataRepository<IStockRepository>();

                Stock updatedEntity = null;

                if (stockItem.Id == 0)
                    updatedEntity = stockRepository.Add(stockItem);
                else
                    updatedEntity = stockRepository.Update(stockItem);

                return updatedEntity;
            });
        }