private async Task ProcessMessageAsync(OrderBookSnapshotEvent message)
        {
            if (message.OrderBook.IsBuy && _priceType == PriceType.Ask)
            {
                return;
            }

            if (!message.OrderBook.IsBuy && _priceType == PriceType.Bid)
            {
                return;
            }

            if (!message.OrderBook.Levels.Any())
            {
                return;
            }

            try
            {
                string priceValue;

                if (_priceType == PriceType.Ask)
                {
                    priceValue = message.OrderBook.Levels
                                 .OrderBy(level => level.Price)
                                 .First()
                                 .Price;
                }
                else if (_priceType == PriceType.Bid)
                {
                    priceValue = message.OrderBook.Levels
                                 .OrderByDescending(level => level.Price)
                                 .First()
                                 .Price;
                }
                else
                {
                    return;
                }

                var assetPairId = message.OrderBook.Asset;
                var time        = message.OrderBook.Timestamp.ToDateTime();
                var price       = decimal.Parse(priceValue);

                await _pricesHandler.HandleAsync(assetPairId, time, (double)price);
            }
            catch (Exception exception)
            {
                _logger.LogError(exception, "An error occurred during processing order book. {@Message}",
                                 message);
            }
        }
        public async Task Initial_Update()
        {
            // arrange

            var assetPairId = "BTCUSD";
            var time        = DateTime.UtcNow;
            var price       = 100.1d;

            // act

            await _handler.HandleAsync(assetPairId, time, price);

            // assert

            _candleServiceMock.Verify(o => o.AddAsync(It.IsAny <List <Candle> >()), Times.Once);
        }