public async Task Can_Load_All_MSFT_Stocks() { var service = new MockStockService(); var stocks = await service.GetStockPricesFor("MSFT", CancellationToken.None); Assert.AreEqual(stocks.Count(), 2); }
public async Task SearchForStocksTest() { var service = new MockStockService(); var stocks = await service.SearchForStocks("MSFT", CancellationToken.None); Assert.AreEqual(stocks.Count(), 2); Assert.AreEqual(stocks.Sum(stock => stock.Change), 0.7m); }
public async Task Can_Load_All_GOOGL_Stocks() { var service = new MockStockService(); var stocks = await service.GetStockPricesFor("GOOGL", CancellationToken.None); Assert.AreEqual(stocks.Count(), 2); Assert.AreEqual(stocks.Sum(stock => stock.Change), 0.m); }
public StockControllerTest() { _testStock = new Stock() { Id = _testStockId, ProductId = _testProductId, Quantity = 2.0M, Currency = Currency.Euro, PricePorUnity = 8, TotalPrice = 16 }; _mockService = new MockStockService(); _controller = GetStocksController(_mockService); }
public async Task CanLoadAllMSFTStocks() { // Arrange var service = new MockStockService(); var stocks = await service.GetStockPricesFor("MSFT", CancellationToken.None); // Act // Assert Assert.AreEqual(stocks.Count(), 2); Assert.AreEqual(stocks.Sum(stock => stock.Change), 0.7m); }
private StocksController GetStocksController(MockStockService mockStockService) { var authService = MockAuthorizationService.BuildAuthorizationService(services => { services.AddScoped <IStockService>(sp => mockStockService.Object); services.AddScoped <IAuthorizationHandler, AdminAuthorizationHandler>(); }); var controller = new StocksController(mockStockService.Object, authService); MockAuthorizationService.SetupUserWithRole(controller, Constants.UserAdministratorsRole); return(controller); }
private async void Search_Click(object sender, RoutedEventArgs e) { #region Before loading stock data var watch = new Stopwatch(); watch.Start(); StockProgress.Visibility = Visibility.Visible; StockProgress.IsIndeterminate = true; Search.Content = "Cancel"; #endregion if (cancellationTokenSource != null) { cancellationTokenSource.Cancel(); cancellationTokenSource = null; return; } cancellationTokenSource = new CancellationTokenSource(); cancellationTokenSource.Token.Register(() => { Notes.Text = "Cancelation was requested-->"; }); try { var tickers = Ticker.Text.Split(',', ' '); var service = new MockStockService(); var tickerLoadingTasks = new List <Task <IEnumerable <StockPrice> > >(); foreach (var ticker in tickers) { var loadTask = service.GetStockPricesFor(ticker, cancellationTokenSource.Token); tickerLoadingTasks.Add(loadTask); } var timeoutTask = Task.Delay(100); var allStocksLoading = Task.WhenAll(tickerLoadingTasks); var completedTask = await Task.WhenAny(timeoutTask, allStocksLoading); if (completedTask == timeoutTask) { cancellationTokenSource.Cancel(); cancellationTokenSource = null; throw new Exception("Timeout!"); } Stocks.ItemsSource = allStocksLoading.Result.SelectMany(stocks => stocks); } catch (Exception ex) { Notes.Text += ex.Message + Environment.NewLine; } #region After stock data is loaded StocksStatus.Text = $"Loaded stocks for {Ticker.Text} in {watch.ElapsedMilliseconds}ms"; StockProgress.Visibility = Visibility.Hidden; Search.Content = "Search"; #endregion }