예제 #1
0
        public void ShouldAddStockToCustomerAfterBuyingIfNotExists()
        {
            //Arrange
            var args = new BuyArguments()
            {
                SellerID     = 5,
                CustomerID   = 40,
                StockID      = 20, //Customer hasnt this stock
                StockCount   = 2,
                PricePerItem = 100.0M
            };

            var entityToAdd = new StockToTraderEntityDB()
            {
                TraderId     = args.CustomerID,
                StockId      = args.StockID,
                StockCount   = args.StockCount,
                PricePerItem = args.PricePerItem
            };

            //Act
            saleHandler.HandleBuy(args);

            //Assert
            this.traderStockTableRepository.Received(1).Add(Arg.Any <StockToTraderEntityDB>());
            this.traderStockTableRepository.Received(2).SaveChanges();
        }
예제 #2
0
        public void AdditionStockToCustomer(BuyArguments args)
        {
            var entityToAdd = new StockToTraderEntityDB()
            {
                TraderId     = args.CustomerID,
                StockId      = args.StockID,
                StockCount   = args.StockCount,
                PricePerItem = args.PricePerItem
            };

            if (traderStockTableRepository.Contains(entityToAdd))
            {
                traderStockTableRepository.AdditionalStockToCustomer(args);
            }
            else
            {
                traderStockTableRepository.Add(entityToAdd);
            }
            traderStockTableRepository.SaveChanges();
        }
        public int AddNewStockToTrader(TraderInfo trader, StockInfo stock)
        {
            var entityToAdd = new StockToTraderEntityDB()
            {
                TraderId     = trader.Id,
                StockId      = stock.Id,
                StockCount   = stock.Count,
                PricePerItem = stock.PricePerItem
            };

            if (this.traderStockTableRepository.Contains(entityToAdd))
            {
                throw new ArgumentException($"This stock {stock.Name} has been added for trader {trader.Name} {trader.Surname}.");
            }

            this.traderStockTableRepository.Add(entityToAdd);

            this.traderStockTableRepository.SaveChanges();

            return(entityToAdd.Id);
        }
 public bool Contains(StockToTraderEntityDB stockToTraderEntity)
 {
     return(this.dbContext.TraderStocks.Any(t =>
                                            t.TraderId == stockToTraderEntity.TraderId &&
                                            t.StockId == stockToTraderEntity.StockId));
 }
 public void Add(StockToTraderEntityDB entityToAdd)
 {
     this.dbContext.TraderStocks.Add(entityToAdd);
 }