public void GetLatestData() { // create fakes var logger = A.Fake<ILog>(); var marketDataProvider = A.Fake<IMarketDataProvider>(); var stockListProvider = A.Fake<IStockListProvider>(); var marketDataRepositoryFactory = A.Fake<IMarketDataRepositoryFactory>(); var marketDataRepository = A.Fake<IMarketDataRepository>(); A.CallTo(() => marketDataRepositoryFactory.CreateRepository()).Returns(marketDataRepository); var stockQuoteSet = A.Fake<IDbSet<StockQuote>>(); marketDataRepository.StockQuotes = stockQuoteSet; // create subscriptionData var stocks = new List<Stock>(); var updateIntervalTime = TimeSpan.FromMilliseconds(int.MaxValue); var subscription = new Subscription { UpdateInterval = new DateTime(1900, 1, 1, updateIntervalTime.Hours, updateIntervalTime.Minutes, updateIntervalTime.Seconds), TimeOfDayStart = new DateTime(1900, 1, 1, 0, 0, 0), TimeOfDayEnd = new DateTime(1900, 1, 1, 23, 59, 59, 999) }; // create fake return value var stockQuotes = new List<StockQuote> { new StockQuote { AskPrice = 1.0m, BidPrice = 1.2m, Change = 0.01m, OpenPrice = 0.9m, QuoteDateTime = DateTime.Now, Symbol = "TST1" }, new StockQuote { AskPrice = 2.0m, BidPrice = 2.2m, Change = 0.02m, OpenPrice = 1.0m, QuoteDateTime = DateTime.Now, Symbol = "TST2" }, new StockQuote { AskPrice = 3.0m, BidPrice = 3.2m, Change = 0.03m, OpenPrice = 1.1m, QuoteDateTime = DateTime.Now, Symbol = "TST3" } }; // hold onto list of quotes added to repository var repositoryQuotes = new List<StockQuote>(); // handle calls to fakes A.CallTo(() => stockListProvider.GetStocks(subscription)).Returns(stocks); A.CallTo(() => marketDataProvider.GetQuotes(stocks)).Returns(stockQuotes); A.CallTo(() => stockQuoteSet.Add(A<StockQuote>.Ignored)) .Invokes((StockQuote quote) => repositoryQuotes.Add(quote)); // create subscriptionData var marketDataSubscription = new MarketDataSubscription(logger, marketDataRepositoryFactory, marketDataProvider, stockListProvider, null, subscription); // call get latest data marketDataSubscription.InvokeMethod("GetLatestQuotes"); // ensure call to get data was made A.CallTo(() => marketDataProvider.GetQuotes(stocks)).MustHaveHappened(); // ensure call to store data was made A.CallTo(() => stockQuoteSet.Add(A<StockQuote>.Ignored)).MustHaveHappened(Repeated.Exactly.Times(3)); // check that quotes were added to the repository repositoryQuotes.Should().HaveCount(3); repositoryQuotes.Should().OnlyContain(q => stockQuotes.Contains(q)); }
private void RequestMarketDataSubscription(InstrumentSubscription subscription, MarketDataSubscription.Level level) { var marketDataSubscription = new MarketDataSubscription { contract_id = subscription.ContractId, level = (uint)level }; subscription.StartWaitForData(level); using (requestBatchLock.Lock()) { requestBatch.Add(marketDataSubscription); } }
public void GetLatestData() { // create fakes var logger = A.Fake <ILog>(); var marketDataProvider = A.Fake <IMarketDataProvider>(); var stockListProvider = A.Fake <IStockListProvider>(); var marketDataRepositoryFactory = A.Fake <IMarketDataRepositoryFactory>(); var marketDataRepository = A.Fake <IMarketDataRepository>(); A.CallTo(() => marketDataRepositoryFactory.CreateRepository()).Returns(marketDataRepository); var stockQuoteSet = A.Fake <IDbSet <StockQuote> >(); marketDataRepository.StockQuotes = stockQuoteSet; // create subscriptionData var stocks = new List <Stock>(); var updateIntervalTime = TimeSpan.FromMilliseconds(int.MaxValue); var subscription = new Subscription { UpdateInterval = new DateTime(1900, 1, 1, updateIntervalTime.Hours, updateIntervalTime.Minutes, updateIntervalTime.Seconds), TimeOfDayStart = new DateTime(1900, 1, 1, 0, 0, 0), TimeOfDayEnd = new DateTime(1900, 1, 1, 23, 59, 59, 999) }; // create fake return value var stockQuotes = new List <StockQuote> { new StockQuote { AskPrice = 1.0m, BidPrice = 1.2m, Change = 0.01m, OpenPrice = 0.9m, QuoteDateTime = DateTime.Now, Symbol = "TST1" }, new StockQuote { AskPrice = 2.0m, BidPrice = 2.2m, Change = 0.02m, OpenPrice = 1.0m, QuoteDateTime = DateTime.Now, Symbol = "TST2" }, new StockQuote { AskPrice = 3.0m, BidPrice = 3.2m, Change = 0.03m, OpenPrice = 1.1m, QuoteDateTime = DateTime.Now, Symbol = "TST3" } }; // hold onto list of quotes added to repository var repositoryQuotes = new List <StockQuote>(); // handle calls to fakes A.CallTo(() => stockListProvider.GetStocks(subscription)).Returns(stocks); A.CallTo(() => marketDataProvider.GetQuotes(stocks)).Returns(stockQuotes); A.CallTo(() => stockQuoteSet.Add(A <StockQuote> .Ignored)) .Invokes((StockQuote quote) => repositoryQuotes.Add(quote)); // create subscriptionData var marketDataSubscription = new MarketDataSubscription(logger, marketDataRepositoryFactory, marketDataProvider, stockListProvider, null, subscription); // call get latest data marketDataSubscription.InvokeMethod("GetLatestQuotes"); // ensure call to get data was made A.CallTo(() => marketDataProvider.GetQuotes(stocks)).MustHaveHappened(); // ensure call to store data was made A.CallTo(() => stockQuoteSet.Add(A <StockQuote> .Ignored)).MustHaveHappened(Repeated.Exactly.Times(3)); // check that quotes were added to the repository repositoryQuotes.Should().HaveCount(3); repositoryQuotes.Should().OnlyContain(q => stockQuotes.Contains(q)); }
/// <summary> /// Отправить сообщение в сокет /// </summary> public void SendMessage(MarketDataSubscription msg) => SendMessageImpl(new ClientMsg { market_data_subscription = { msg } });