public void TestarPrecoInicialIntervaloSeguidoDeSubida_DisparaEmailVenda()
        {
            _stockQuoteMonitor = new StockQuoteMonitor(_log.Object, _stockObservable.Object, _notificationService.Object);

            _stockQuoteMonitor.StartMonitoring("PETR4", 20, 10);

            var primeiraCotacao = new List <StockInfo>()
            {
                new StockInfo()
                {
                    StockCode  = "PETR4",
                    StockPrice = 15,
                    Timestamp  = DateTime.Now
                }
            };

            _stockQuoteMonitor.OnNext(primeiraCotacao);

            var segundaCotacao = new List <StockInfo>()
            {
                new StockInfo()
                {
                    StockCode  = "PETR4",
                    StockPrice = 30,
                    Timestamp  = DateTime.Now
                }
            };

            _stockQuoteMonitor.OnNext(segundaCotacao);

            _notificationService.Verify(x => x.Notify(ApplicationConstants.SubjectVenda, It.IsAny <string>()), Times.Once);
        }
        public void TestarPrecoInicialIntervalo_NaoDisparaEmail()
        {
            _stockQuoteMonitor = new StockQuoteMonitor(_log.Object, _stockObservable.Object, _notificationService.Object);

            _stockQuoteMonitor.StartMonitoring("PETR4", 20, 10);

            var listaCotacoes = new List <StockInfo>()
            {
                new StockInfo()
                {
                    StockCode  = "PETR4",
                    StockPrice = 15,
                    Timestamp  = DateTime.Now
                }
            };

            _stockQuoteMonitor.OnNext(listaCotacoes);

            _notificationService.Verify(x => x.Notify(It.IsAny <string>(), It.IsAny <string>()), Times.Never);
        }
        public void TestarPrecoInicialAbaixoCompra_DisparaEmailCompra()
        {
            _stockQuoteMonitor = new StockQuoteMonitor(_log.Object, _stockObservable.Object, _notificationService.Object);

            _stockQuoteMonitor.StartMonitoring("PETR4", 20, 10);

            var listaCotacoes = new List <StockInfo>()
            {
                new StockInfo()
                {
                    StockCode  = "PETR4",
                    StockPrice = 5,
                    Timestamp  = DateTime.Now
                }
            };

            _stockQuoteMonitor.OnNext(listaCotacoes);

            _notificationService.Verify(x => x.Notify(ApplicationConstants.SubjectCompra, It.IsAny <string>()), Times.Once);
        }