public int PurchaseItem(VendingStock stock) { var stockItems = _vendingStockRepository.ReduceStock(stock, ReduceStock); var stockItem = stockItems.Single(x => x.Item == stock); return(stockItem.AvailableStock); }
public int AddInventory(VendingStock stock, int addedInventory) { var stockItems = _vendingStockRepository.AddInventory(stock, addedInventory); var stockItem = stockItems.Single(x => x.Item == stock); return(stockItem.AvailableStock); }
public IEnumerable <StockItem> ReduceStock(VendingStock item, int reduceAmount) { var stockItem = _stock.Single(x => x.Item == item); stockItem.AvailableStock -= reduceAmount; return(_stock); }
public IEnumerable <StockItem> AddInventory(VendingStock item, int addedInventory) { var stockItem = _stock.Single(x => x.Item == item); stockItem.AvailableStock += addedInventory; return(_stock); }
public void DepositChangeWillIncreaseTotalAvailableChangeByStockCost() { _stock = VendingStock.Pop; var actual = _changeStatus.DepositChange(_stock.Cost); Assert.AreEqual(_stock.Cost, actual); }
public void MakeChangeWillReturnChangeInHighestDenominatonsPossible() { _stock = VendingStock.Chips; var insertedAmount = 1.25m; var expectedResults = new List <Coin> { Coin.Quarter, Coin.Quarter, Coin.Quarter }; var actual = _changeStatus.MakeChange(_stock.Cost, insertedAmount); CollectionAssert.AreEquivalent(expectedResults, actual); }
public void MakeChangeWillReturnModulusOfInsertedValueInCorrectDenominations() { _stock = VendingStock.Candy; var insertedAmount = 1.00m; var expectedResults = new List <Coin> { Coin.Quarter, Coin.Dime }; var actual = _changeStatus.MakeChange(_stock.Cost, insertedAmount); CollectionAssert.AreEquivalent(expectedResults, actual); }
public string SelectItemForPurchase(VendingStock vendingStock, decimal tenderedAmount) { if (_stockStatus.HasAvailableItem(vendingStock)) { if (_itemValidator.CanPurchase(vendingStock, tenderedAmount)) { _changeStatus.DepositChange(vendingStock.Cost); _changeStatus.MakeChange(vendingStock.Cost, tenderedAmount); _stockStatus.PurchaseItem(vendingStock); return("THANK YOU"); } return(string.Format("PRICE ${0}", vendingStock.Cost)); } return("SOLD OUT"); }
public bool CanPurchase(VendingStock stock, decimal amount) { return(amount >= stock.Cost); }
public StockItem(VendingStock item, int availableStock) { Item = item; AvailableStock = availableStock; }
static VendingStock() { Chips = new VendingStock(0.50m); Candy = new VendingStock(0.65m); Pop = new VendingStock(1.00m); }
public bool HasFundsAvailable(VendingStock item, decimal funds) { var stock = _vendingStockRepository.GetInventory(); return(stock.Single(x => x.Item == item).Item.Cost <= funds); }
public bool HasAvailableItem(VendingStock item) { var stock = _vendingStockRepository.GetInventory(); return(stock.Single(x => x.Item == item).AvailableStock >= 1); }