public async Task SetMarginTradingEnabled(string clientId, bool enabled) { var settings = await _clientAccountClient.GetMarginEnabledAsync(clientId); if (_marginSettings.IsLive) { settings.EnabledLive = enabled; } else { settings.Enabled = enabled; } await _clientAccountClient.SetMarginEnabledAsync(clientId, settings.Enabled, settings.EnabledLive, settings.TermsOfUseAgreed); var marginEnabledChangedMessage = new MarginTradingEnabledChangedMessage { ClientId = clientId, EnabledDemo = settings.Enabled, EnabledLive = settings.EnabledLive }; _marginTradingSettingsCacheService.OnMarginTradingEnabledChanged(marginEnabledChangedMessage); await _eventsPublisher.ProduceAsync(marginEnabledChangedMessage); }
public void OnMarginTradingEnabledChanged(MarginTradingEnabledChangedMessage message) { _cacheProvider.Add(GetClientTradingEnabledCacheKey(message.ClientId), new EnabledMarginTradingTypes { Demo = message.EnabledDemo, Live = message.EnabledLive }, ClientTradingEnabledCachingParameters); }
public async Task Always_ShouldCorrectlyEnableLive() { // arrange //_marginSettings.IsLive = true; //act await _sut.SetMarginTradingEnabled("id of client", enabled : true); //assert Mock.Get(_clientAccountsService).Verify(r => r.SetMarginEnabledAsync("id of client", false, true, false)); var expectedMessage = new MarginTradingEnabledChangedMessage { ClientId = "id of client", EnabledDemo = false, EnabledLive = true }; _sentMessage.Should().BeEquivalentTo(expectedMessage); Mock.Get(_marginTradingSettingsCacheService) .Verify(s => s.OnMarginTradingEnabledChanged(expectedMessage.Equivalent())); }
public void SetUp() { _clientAccountsService = Mock.Of <IClientAccountService>(r => r.GetMarginEnabledAsync("id of client") == Task.FromResult(new MarginEnabledSettingsModel())); var publisher = Mock.Of <IMessageProducer <MarginTradingEnabledChangedMessage> >(); Mock.Get(publisher) .Setup(s => s.ProduceAsync(It.IsNotNull <MarginTradingEnabledChangedMessage>())) .Returns(Task.CompletedTask).Callback <MarginTradingEnabledChangedMessage>(m => _sentMessage = m); var expectedRabbitMqSettings = new RabbitMqSettings { ConnectionString = "conn str", ExchangeName = "exchange name" }; var rabbitMqService = Mock.Of <IRabbitMqService>(s => s.GetProducer(expectedRabbitMqSettings.Equivalent(), true, s.GetJsonSerializer <MarginTradingEnabledChangedMessage>()) == publisher); _marginSettings = new MarginTradingSettings { MtRabbitMqConnString = "conn str", RabbitMqQueues = new RabbitMqQueues { MarginTradingEnabledChanged = new RabbitMqQueueInfo { ExchangeName = "exchange name" } } }; _marginTradingSettingsCacheService = Mock.Of <IMarginTradingSettingsCacheService>(); _sut = new MarginTradingEnablingService(_clientAccountsService, rabbitMqService, _marginSettings, _marginTradingSettingsCacheService); _sut.Start(); }
public Task ProcessMarginTradingEnabledChanged(MarginTradingEnabledChangedMessage message) { _marginTradingSettingsCacheService.OnMarginTradingEnabledChanged(message); return(Task.CompletedTask); }