Ejemplo n.º 1
0
        public void Build_Has_Non_Null_Response()
        {
            var factory = new EquityRuleHighVolumeFactory(_orderFilterService, _equityFactory, _fixedIncomeFactory, _tradingHoursService, this.currencyConverterService, _logger, _tradingHistoryLogger);

            var result = factory.Build(_equitiesParameters, _opCtx, _alertStream, _dataRequestSubscriber, RuleRunMode.ForceRun);

            Assert.IsNotNull(result);
        }
        public HighVolumeSteps(ScenarioContext scenarioContext, UniverseSelectionState universeSelectionState)
        {
            _scenarioContext        = scenarioContext;
            _universeSelectionState = universeSelectionState;

            var exchangeRateApiRepository = A.Fake <IExchangeRateApiCachingDecorator>();

            var exchangeRateDto = new ExchangeRateDto
            {
                DateTime = new DateTime(2018, 01, 01), Name = "GBX/USD", FixedCurrency = "GBX", VariableCurrency = "USD", Rate = 0.02d
            };

            var exchangeRateDtoJpy = new ExchangeRateDto
            {
                DateTime         = new DateTime(2018, 01, 01),
                Name             = "USD/JPY",
                FixedCurrency    = "USD",
                VariableCurrency = "JPY",
                Rate             = 100
            };

            var exchangeRateDtoGbx = new ExchangeRateDto
            {
                DateTime         = new DateTime(2018, 01, 01),
                Name             = "GBX/GBX",
                FixedCurrency    = "GBX",
                VariableCurrency = "GBX",
                Rate             = 1
            };

            A.CallTo(() =>
                     exchangeRateApiRepository.GetAsync(A <DateTime> .Ignored, A <DateTime> .Ignored))
            .Returns(new Dictionary <DateTime, IReadOnlyCollection <ExchangeRateDto> >
            {
                { new DateTime(2018, 01, 01), new ExchangeRateDto[]
                  {
                      exchangeRateDto,
                      exchangeRateDtoJpy,
                      exchangeRateDtoGbx
                  } }
            });

            var repository = A.Fake <IMarketOpenCloseApiCachingDecorator>();

            A
            .CallTo(() => repository.GetAsync()).
            Returns(new ExchangeDto[]
            {
                new ExchangeDto
                {
                    Code              = "XLON",
                    MarketOpenTime    = TimeSpan.FromHours(8),
                    MarketCloseTime   = TimeSpan.FromHours(16),
                    IsOpenOnMonday    = true,
                    IsOpenOnTuesday   = true,
                    IsOpenOnWednesday = true,
                    IsOpenOnThursday  = true,
                    IsOpenOnFriday    = true,
                    IsOpenOnSaturday  = true,
                    IsOpenOnSunday    = true,
                },

                new ExchangeDto
                {
                    Code              = "NASDAQ",
                    MarketOpenTime    = TimeSpan.FromHours(15),
                    MarketCloseTime   = TimeSpan.FromHours(23),
                    IsOpenOnMonday    = true,
                    IsOpenOnTuesday   = true,
                    IsOpenOnWednesday = true,
                    IsOpenOnThursday  = true,
                    IsOpenOnFriday    = true,
                    IsOpenOnSaturday  = true,
                    IsOpenOnSunday    = true,
                }
            });

            _tradingHoursService = new MarketTradingHoursService(repository, new NullLogger <MarketTradingHoursService>());

            _equityMarketCacheFactory = new UniverseEquityMarketCacheFactory(
                new StubRuleRunDataRequestRepository(),
                new StubRuleRunDataRequestRepository(),
                new NullLogger <UniverseEquityMarketCacheFactory>());

            _fixedIncomeMarketCacheFactory = new UniverseFixedIncomeMarketCacheFactory(
                new StubRuleRunDataRequestRepository(),
                new StubRuleRunDataRequestRepository(),
                new NullLogger <UniverseFixedIncomeMarketCacheFactory>());

            var currencyLogger = new NullLogger <CurrencyConverterService>();

            currencyConverterService    = new CurrencyConverterService(exchangeRateApiRepository, currencyLogger);
            _universeOrderFilterService = A.Fake <IUniverseEquityOrderFilterService>();
            _logger                      = new NullLogger <HighVolumeRule>();
            _tradingLogger               = new NullLogger <TradingHistoryStack>();
            _ruleCtx                     = A.Fake <ISystemProcessOperationRunRuleContext>();
            _alertStream                 = A.Fake <IUniverseAlertStream>();
            _dataRequestSubscriber       = A.Fake <IUniverseDataRequestsSubscriber>();
            _equityRuleHighVolumeFactory = new EquityRuleHighVolumeFactory(
                _universeOrderFilterService,
                _equityMarketCacheFactory,
                _fixedIncomeMarketCacheFactory,
                _tradingHoursService,
                this.currencyConverterService,
                _logger,
                _tradingLogger);
        }