Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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));
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 5
0
 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);
 }