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 void Execute() { trace.Trace(TraceEventType.Information, (int)EventId.StartingRateSync, "Syncing Rates"); trace.Trace(TraceEventType.Information, (int)EventId.GettingRatesFromApi, "Getting Rates from API"); var rates = rateService.GetRates(GetOrganisationUniqueName()); trace.Trace(TraceEventType.Information, (int)EventId.GettingCurrenciesFromCrm, "Getting Currencies from CRM"); var currencies = repo.GetCurrencies(); trace.Trace(TraceEventType.Information, (int)EventId.SyncingCurrencies, "Sync Currencies with Latest Rate Date"); currencies = rateSyncer.Sync(currencies, rates); trace.Trace(TraceEventType.Information, (int)EventId.SavingCurrencies, "Saving updated currencies to CRM"); repo.SaveCurrencies(currencies); new JobCompleter(organisationService, config, trace).Complete(trace.HasWarnings ? RunStatus.Warning : RunStatus.Success); }