public ScheduleSettingsCacheService( ICqrsSender cqrsSender, IScheduleSettingsApi scheduleSettingsApi, IAssetPairsCache assetPairsCache, IDateService dateService, ILog log, OvernightMarginSettings overnightMarginSettings) { _cqrsSender = cqrsSender; _scheduleSettingsApi = scheduleSettingsApi; _assetPairsCache = assetPairsCache; _dateService = dateService; _log = log; _overnightMarginSettings = overnightMarginSettings; }
public OvernightMarginService( IDateService dateService, ITradingEngine tradingEngine, IAccountsCacheService accountsCacheService, IAccountUpdateService accountUpdateService, IScheduleSettingsCacheService scheduleSettingsCacheService, IOvernightMarginParameterContainer overnightMarginParameterContainer, ILog log, IEventChannel <MarginCallEventArgs> marginCallEventChannel, OvernightMarginSettings overnightMarginSettings) { _dateService = dateService; _tradingEngine = tradingEngine; _accountsCacheService = accountsCacheService; _accountUpdateService = accountUpdateService; _scheduleSettingsCacheService = scheduleSettingsCacheService; _overnightMarginParameterContainer = overnightMarginParameterContainer; _log = log; _marginCallEventChannel = marginCallEventChannel; _overnightMarginSettings = overnightMarginSettings; }
private void RegisterDependenciesCore(bool mockEvents = false) { var builder = new ContainerBuilder(); var overnightMarginSettings = new OvernightMarginSettings(); var marginSettings = new MarginTradingSettings { RabbitMqQueues = new RabbitMqQueues { MarginTradingEnabledChanged = new RabbitMqQueueInfo { ExchangeName = "" } }, BlobPersistence = new BlobPersistenceSettings() { FxRatesDumpPeriodMilliseconds = 10000, QuotesDumpPeriodMilliseconds = 10000, OrderbooksDumpPeriodMilliseconds = 5000, OrdersDumpPeriodMilliseconds = 5000 }, ReportingEquivalentPricesSettings = new[] { new ReportingEquivalentPricesSettings { EquivalentAsset = "USD", LegalEntity = "LYKKETEST" } }, OvernightMargin = overnightMarginSettings, }; builder.RegisterInstance(marginSettings).SingleInstance(); builder.RegisterInstance(PositionHistoryEvents).As <List <PositionHistoryEvent> >().SingleInstance(); builder.RegisterInstance(overnightMarginSettings).SingleInstance(); builder.RegisterInstance(Mock.Of <ExchangeConnectorServiceClient>()); builder.RegisterInstance(new RiskInformingSettings { Data = new[] { new RiskInformingParams { EventTypeCode = "BE01", Level = "None", System = "QuotesMonitor", }, new RiskInformingParams { EventTypeCode = "BE02", Level = "None", System = "QuotesMonitor", } } }).SingleInstance(); builder.RegisterModule(new MockBaseServicesModule()); builder.RegisterModule(new MockRepositoriesModule()); var brokerId = Guid.NewGuid().ToString(); builder.RegisterModule(new MockExternalServicesModule(Accounts, brokerId)); if (mockEvents) { builder.RegisterModule(new MockEventModule()); } else { builder.RegisterModule(new EventModule()); } builder.RegisterModule(new CacheModule()); builder.RegisterModule(new ServicesModule()); builder.RegisterModule(new ManagersModule()); builder.RegisterType <EventChannel <AccountBalanceChangedEventArgs> >() .As <IEventChannel <AccountBalanceChangedEventArgs> >() .SingleInstance(); var clientProfileSettingsCacheMock = new Mock <IClientProfileSettingsCache>(); var outClientProfileSettingsContractDummy = new ClientProfileSettingsContract(); clientProfileSettingsCacheMock.Setup(s => s.TryGetValue(It.IsAny <string>(), It.IsAny <string>(), out outClientProfileSettingsContractDummy)) .Returns(true); builder.RegisterInstance(clientProfileSettingsCacheMock.Object) .As <IClientProfileSettingsCache>() .SingleInstance(); var settingsServiceMock = new Mock <IMarginTradingSettingsCacheService>(); settingsServiceMock.Setup(s => s.IsMarginTradingEnabled(It.IsAny <string>())) .ReturnsAsync(new EnabledMarginTradingTypes { Live = true, Demo = true }); settingsServiceMock.Setup(s => s.IsMarginTradingEnabled(It.IsAny <string>(), It.IsAny <bool>())) .ReturnsAsync(true); builder.RegisterInstance(settingsServiceMock.Object) .As <IMarginTradingSettingsCacheService>() .SingleInstance(); var clientAccountClientMock = new Mock <IClientAccountClient>(); clientAccountClientMock.Setup(s => s.CreateWalletAsync(It.IsAny <string>(), It.IsAny <WalletType>(), It.IsAny <OwnerType>(), It.IsAny <string>(), It.IsAny <string>())) .Returns((string clientId, WalletType walletType, OwnerType owner, string name, string description) => Task.FromResult( new WalletDtoModel { Id = Guid.NewGuid().ToString(), Name = name, Type = walletType.ToString(), Description = description, ClientId = clientId, })); clientAccountClientMock.Setup(s => s.GetByIdAsync(It.IsAny <string>())) .ReturnsAsync(() => new ClientModel { Email = "*****@*****.**", NotificationsId = Guid.NewGuid().ToString() }); clientAccountClientMock.Setup(s => s.GetPushNotificationAsync(It.IsAny <string>())) .ReturnsAsync(() => new PushNotificationsSettingsModel { Enabled = true }); builder.RegisterInstance(clientAccountClientMock.Object) .As <IClientAccountClient>() .SingleInstance(); builder.RegisterInstance(new Mock <IOperationsLogService>().Object) .As <IOperationsLogService>() .SingleInstance(); builder.RegisterType <ConvertService>().As <IConvertService>().SingleInstance(); var scheduleSettingsApiMock = new Mock <IScheduleSettingsApi>(); scheduleSettingsApiMock.Setup(m => m.StateList(It.IsAny <string[]>())) .ReturnsAsync(new List <CompiledScheduleContract>()); scheduleSettingsApiMock.Setup(m => m.List(It.IsAny <string>())) .ReturnsAsync(new List <ScheduleSettingsContract>() { AlwaysOnMarketSchedule }); builder.RegisterInstance(scheduleSettingsApiMock.Object).As <IScheduleSettingsApi>(); var exchangeConnector = Mock.Of <IExchangeConnectorClient>(); builder.RegisterInstance(exchangeConnector).As <IExchangeConnectorClient>(); builder.RegisterInstance(new Mock <IMtSlackNotificationsSender>(MockBehavior.Loose).Object).SingleInstance(); builder.RegisterInstance(Mock.Of <IRabbitMqService>()).As <IRabbitMqService>(); builder.RegisterBuildCallback(c => { void StartService <T>() where T: IStartable { c.Resolve <T>().Start(); } ContainerProvider.Container = c; // note the order here is important! StartService <TradingInstrumentsManager>(); StartService <AccountManager>(); StartService <OrderCacheManager>(); StartService <PendingOrdersCleaningService>(); StartService <QuoteCacheService>(); StartService <FxRateCacheService>(); }); builder.RegisterType <SimpleIdentityGenerator>().As <IIdentityGenerator>(); Container = builder.Build(); Container.Resolve <OrderBookList>().Init(null); Container.Resolve <IScheduleSettingsCacheService>().UpdateAllSettingsAsync().GetAwaiter().GetResult(); }