public void ShouldNotReturnBaseCurrencies() { var baseCurencyId = Guid.NewGuid(); var rateSyncer = new RateSyncer(new MockFExConfig { BaseCurrencyId = baseCurencyId }, new Mock <ILoggingService>().Object); var currencies = CreateCurrencyCollection(baseCurencyId); var rates = new ExchangeRateCollection { Items = new List <ExchangeRate> { new ExchangeRate { CurrencyCode = CurrencyCode.GBP, RateNew = 99 }, new ExchangeRate { CurrencyCode = CurrencyCode.EUR, RateNew = 1.2M }, new ExchangeRate { CurrencyCode = CurrencyCode.USD, RateNew = 1.4M } } }; var result = rateSyncer.Sync(currencies, rates); var gbp = result.Entities.SingleOrDefault(x => (string)x.Attributes[CurrencyAttribute.CurrencyCode] == CurrencyCode.GBP); Assert.That(gbp, Is.Null); }
public void ShouldUpdateExchangeRatesForPassedCurrencies() { var baseCurrencyId = Guid.NewGuid(); var rateSyncer = new RateSyncer(new MockFExConfig { BaseCurrencyId = baseCurrencyId }, new Mock <ILoggingService>().Object); var currencies = CreateCurrencyCollection(baseCurrencyId); var rates = new ExchangeRateCollection { Items = new List <ExchangeRate> { new ExchangeRate { CurrencyCode = CurrencyCode.GBP, RateNew = 1 }, new ExchangeRate { CurrencyCode = CurrencyCode.EUR, RateNew = 1.2M }, new ExchangeRate { CurrencyCode = CurrencyCode.USD, RateNew = 1.4M } } }; var result = rateSyncer.Sync(currencies, rates); var eur = result.Entities.Single(x => (string)x.Attributes[CurrencyAttribute.CurrencyCode] == CurrencyCode.EUR); var usd = result.Entities.Single(x => (string)x.Attributes[CurrencyAttribute.CurrencyCode] == CurrencyCode.USD); Assert.That((decimal)eur.Attributes[CurrencyAttribute.ExchangeRate], Is.EqualTo(1.2M)); Assert.That((decimal)usd.Attributes[CurrencyAttribute.ExchangeRate], Is.EqualTo(1.4M)); }
public void ShouldNotLogWarning_WhenBaseCurrencyNotSupplied() { var loggingService = new Mock <ILoggingService>(); var baseCurencyId = Guid.NewGuid(); var rateSyncer = new RateSyncer(new MockFExConfig { BaseCurrencyId = baseCurencyId }, loggingService.Object); var currencies = CreateCurrencyCollection(baseCurencyId); var rates = new ExchangeRateCollection { Items = new List <ExchangeRate> { new ExchangeRate { CurrencyCode = CurrencyCode.EUR, RateNew = 1.2M }, new ExchangeRate { CurrencyCode = CurrencyCode.USD, RateNew = 1.4M } } }; rateSyncer.Sync(currencies, rates); loggingService.Verify( x => x.Trace(TraceEventType.Warning, (int)EventId.UnableToFindRateForCurrency, It.IsAny <string>()), Times.Never); }
public void ShouldLogWarning_WhenRateDataNotAvaliable() { var loggingService = new Mock <ILoggingService>(); var baseCurrencyId = Guid.NewGuid(); var rateSyncer = new RateSyncer(new MockFExConfig { BaseCurrencyId = baseCurrencyId }, loggingService.Object); var currencies = CreateCurrencyCollection(baseCurrencyId); var rates = new ExchangeRateCollection { Items = new List <ExchangeRate> { new ExchangeRate { CurrencyCode = CurrencyCode.GBP, RateNew = 1 }, new ExchangeRate { CurrencyCode = CurrencyCode.USD, RateNew = 1.4M } } }; rateSyncer.Sync(currencies, rates); loggingService.Verify( x => x.Trace(TraceEventType.Warning, (int)EventId.UnableToFindRateForCurrency, It.Is <string>(y => y.Contains(CurrencyCode.EUR))), Times.Once); }
public RateSyncJob(DynamicsRepository repository, IOrganizationService organisationService, IFExConfig config, ILoggingService trace, Guid correlationId) { this.organisationService = organisationService; this.config = config; this.trace = trace; repo = repository; rateService = new RateService(config, trace, correlationId); rateSyncer = new RateSyncer(config, trace); }