public void AddTwoStocksSuccess() { var request0 = new BaseStockModel() { Price = 1, Quantity = 1, Type = StockType.Equity }; var request1 = new BaseStockModel() { Price = 1, Quantity = 1, Type = StockType.Bond }; _fundService.AddStock(request0); _fundService.AddStock(request1); var allStocks = _fundService.AllStocks().ToArray(); AssertEvents(2); AssertStocksLength(allStocks, 2); Assert.That(allStocks.Count(s => s.Type == request0.Type && s.Quantity == request0.Quantity && s.Price == request0.Price), Is.EqualTo(1)); Assert.That(allStocks.Count(s => s.Type == request1.Type && s.Quantity == request1.Quantity && s.Price == request1.Price), Is.EqualTo(1)); AssertTotalMarketValueInStock(allStocks[0], new[] { request0, request1 }); }
private void UpdateFund(BaseStockModel baseStockModel) { if (baseStockModel == null) { return; } // Creating new stock var stock = new StockModel(baseStockModel); // Adding it to collection _stocks.Add(stock); // increasinfg number of specific stocks switch (stock.Type) { case (StockType.Equity): _numberEquities++; _numberCurrent = _numberEquities; _marketValueEquities = _marketValueEquities + stock.Price * stock.Quantity; break; case (StockType.Bond): _numberBonds++; _numberCurrent = _numberBonds; _marketValueBonds = _marketValueBonds + stock.Price * stock.Quantity; break; default: throw new InvalidOperationException($"Not supported Stock Type {stock.Type}."); } _numberTotal = _numberEquities + _numberBonds; _marketValueTotal = _marketValueEquities + _marketValueBonds; _stockWeightEquities = _marketValueEquities * 100 / _marketValueTotal; _stockWeightBonds = _marketValueBonds * 100 / _marketValueTotal; // Updating stocks foreach (var stockModel in _stocks) { if (stockModel.Type == stock.Type) { stockModel.Name = stock.Type.ToString() + _numberCurrent; } stockModel.TotalMarketValue = _marketValueTotal; } // Updating totals foreach (var totalStocksModel in _totals) { var totalNew = GetTotal(totalStocksModel.Type); totalStocksModel.MarketValue = totalNew.MarketValue; totalStocksModel.Number = totalNew.Number; totalStocksModel.StockWeight = totalNew.StockWeight; } EventAggregator.GetEvent <FundChangedEvent>().Publish(); }
public void AddThreeStocksCheckTotalsNumberSuccess() { var request0 = new BaseStockModel() { Price = 1, Quantity = 1, Type = StockType.Equity }; var request1 = new BaseStockModel() { Price = 1, Quantity = 1, Type = StockType.Bond }; var request2 = new BaseStockModel() { Price = 1, Quantity = 1, Type = StockType.Bond }; _fundService.AddStock(request0); _fundService.AddStock(request1); _fundService.AddStock(request2); var allStocks = _fundService.AllStocks().ToArray(); AssertEvents(3); AssertStocksLength(allStocks, 3); AssertTotalMarketValueInStock(allStocks[0], new[] { request0, request1, request2 }); var allTotals = _fundService.AllTotals().ToArray(); Assert.That(allTotals.Length, Is.EqualTo(3)); Assert.That(allTotals.Count(t => t.Type == null), Is.EqualTo(1)); Assert.That(allTotals.Count(t => t.Type == StockType.Bond), Is.EqualTo(1)); Assert.That(allTotals.Count(t => t.Type == StockType.Equity), Is.EqualTo(1)); }
public void AddFirstEquityStockSuccess() { var request = new BaseStockModel() { Price = 1, Quantity = 1, Type = StockType.Equity }; _fundService.AddStock(request); var allStocks = _fundService.AllStocks().ToArray(); _eventAggregatorMock.VerifyGetEvent(); _fundChangedEventMock.VerifyPublishEvent(); Assert.That(allStocks.Count(), Is.EqualTo(1)); Assert.That(allStocks[0].Type, Is.EqualTo(request.Type)); Assert.That(allStocks[0].Price, Is.EqualTo(request.Price)); Assert.That(allStocks[0].Quantity, Is.EqualTo(request.Quantity)); Assert.That(allStocks[0].TotalMarketValue, Is.EqualTo(request.Price * request.Quantity)); }
public void AddThreeStocksCheckTotalsSuccess() { var request0 = new BaseStockModel() { Price = 1, Quantity = 100, Type = StockType.Equity }; var request1 = new BaseStockModel() { Price = 10, Quantity = 10, Type = StockType.Bond }; var request2 = new BaseStockModel() { Price = 1000, Quantity = 1, Type = StockType.Bond }; _fundService.AddStock(request0); _fundService.AddStock(request1); _fundService.AddStock(request2); var allStocks = _fundService.AllStocks().ToArray(); AssertEvents(3); AssertStocksLength(allStocks, 3); AssertTotalMarketValueInStock(allStocks[0], new[] { request0, request1, request2 }); var allTotals = _fundService.AllTotals().ToArray(); AssertTotalsNumber(allTotals); }
public void AddStock(BaseStockModel baseStock) { UpdateFund(baseStock); }