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)