def test_GetTotalValue_ThreeSharesOfApple(self):
     mockStockRepository = BackTestStockRepository()
     mockStockRepository.GetCurrentStockPrice = MagicMock(return_value = 200)
     startingCash = 1000
     portfolio = Portfolio(startingCash, mockStockRepository)
     portfolio.heldStocks['AAPL'] = 3
     expectedValue = 1600
     actualValue = portfolio.GetTotalValue()
     self.assertEqual(expectedValue, actualValue)
 def test_GetTotalValue_ThreeSharesOfApple_ThreeSharesOfMicrosoft(self):
     # Arrange
     mockStockRepository = BackTestStockRepository()
     mockStockRepository.GetCurrentStockPrice = MagicMock(return_value = 200)
     startingCash = 1000
     portfolio = Portfolio(startingCash, mockStockRepository)
     portfolio.heldStocks['AAPL'] = 3
     portfolio.heldStocks['MSFT'] = 3
     expectedValue = 2200
     # Act
     actualValue = portfolio.GetTotalValue()
     # Assert
     self.assertEqual(expectedValue, actualValue)
 def test_Buy_CashLessThanPurchasePrice_RemainderCashAfterPurchase(self):
     # Arrange
     mockStockRepository = BackTestStockRepository()
     mockStockRepository.GetCurrentStockPrice = MagicMock(return_value = 300)
     startingCash = 1000
     portfolio = Portfolio(startingCash, mockStockRepository)
     expectedPortfolioValue = 1000
     expectedStockHeldQuantity = 3
     numberOfStocksToPurchase = 6
     # Act
     portfolio.Buy('AAPL', numberOfStocksToPurchase)
     # Assert
     actualValue = portfolio.GetTotalValue()
     self.assertEqual(actualValue, expectedPortfolioValue)
     self.assertEqual(expectedStockHeldQuantity, portfolio.heldStocks['AAPL'])
 def test_SellAllStocks_SellOrderLessThanHeldQuantity(self):
     # Arrange
     mockStockRepository = BackTestStockRepository()
     mockStockRepository.GetCurrentStockPrice = MagicMock(return_value = 300)
     startingCash = 1000
     portfolio = Portfolio(startingCash, mockStockRepository)
     portfolio.heldStocks['AAPL'] = 10
     numberOfStocksToSell = 5
     expectedStockHeldQuantity = 5
     expectedPortfolioValue = 4000
     # Act
     portfolio.Sell('AAPL', numberOfStocksToSell)
     # Assert
     actualValue = portfolio.GetTotalValue()
     self.assertEqual(expectedPortfolioValue, actualValue)
     self.assertEqual(expectedStockHeldQuantity, portfolio.heldStocks['AAPL'])
 def test_GetTotalValue_InitialSetup(self):
     stockRepository = BackTestStockRepository()
     startingCash = 1000
     portfolio = Portfolio(startingCash, stockRepository)
     totalValue = portfolio.GetTotalValue()
     self.assertEqual(totalValue, startingCash)