Пример #1
0
        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);
        }
Пример #3
0
        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);
        }
Пример #4
0
 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);
        }
Пример #6
0
        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
        }