Ejemplo n.º 1
0
        public async Task GetCurrentRatesAsync_ReturnsDeserializedResult()
        {
            ICurrencyRateProvider provider = _fixture.BasicProvider;

            // Act:
            var result = await provider.GetCurrentRatesAsync();

            // Assert:
            Assert.Equal(_fixture.ExpectedRates1.Count, result.Count);
        }
        public async Task AutoAddEur()
        {
            ICurrencyRateProvider wrappedProvider = _fixture.BasicProvider;

            CachingCurrencyRateProvider provider = new CachingCurrencyRateProvider(wrappedProvider, TimeSpan.FromDays(1), true);

            var snapshot = await provider.GetCurrentRatesAsync();

            Assert.Equal(CurrencyRate.Eur, snapshot[CurrencyCode.Eur]);
        }
Ejemplo n.º 3
0
        public async Task GetCurrentRatesAsync_RunsWebRequest()
        {
            var webxMock = _fixture.WebRequestExecutorMock;
            ICurrencyRateProvider provider = _fixture.BasicProvider;
            // Act:
            await provider.GetCurrentRatesAsync();

            // Assert:
            webxMock.Verify(x => x.ExecuteAsync(_fixture.ExpectedUri), Times.Once);
            webxMock.Verify(x => x.GetResponseStream(), Times.Once);
        }
        public async Task ReturnsCorrectResult()
        {
            ICurrencyRateProvider wrappedProvider = _fixture.BasicProvider;

            CachingCurrencyRateProvider provider = new CachingCurrencyRateProvider(wrappedProvider, TimeSpan.FromHours(1));

            // Act:
            var result = await provider.GetCurrentRatesAsync();

            // Assert:
            Assert.Equal(_fixture.ExpectedRates1.Count, result.Count);
        }
Ejemplo n.º 5
0
        public async Task GetAllRatesAsync()
        {
            ICurrencyRateProvider provider = _fixture.BasicProvider;

            // Act:
            var result = await provider.GetAllRatesAsync();

            Assert.Equal(2, result.Count());

            Assert.Equal(_fixture.ExpectedRates0.Count, result.First().Count);
            Assert.Equal(_fixture.ExpectedRates1.Count, result.Last().Count);
        }
        public async Task GetAllRatesAsync()
        {
            ICurrencyRateProvider       wrappedProvider = _fixture.BasicProvider;
            CachingCurrencyRateProvider provider        = new CachingCurrencyRateProvider(wrappedProvider, TimeSpan.FromHours(1));

            // Act:
            var result = await provider.GetAllRatesAsync();

            Assert.Equal(2, result.Count());

            Assert.Equal(_fixture.ExpectedRates0.Count, result.First().Count);
            Assert.Equal(_fixture.ExpectedRates1.Count, result.Last().Count);
        }
        public async Task CacheIsUtilized()
        {
            ICurrencyRateProvider wrappedProvider = _fixture.BasicProvider;

            CachingCurrencyRateProvider provider = new CachingCurrencyRateProvider(wrappedProvider, TimeSpan.FromDays(1));

            // Act:
            var result0 = await provider.GetCurrentRatesAsync();

            var result1 = await provider.GetCurrentRatesAsync();

            // Assert:
            Assert.Same(result0, result1);
        }
        public async Task CacheIsRefreshedAfterTimeout()
        {
            ICurrencyRateProvider wrappedProvider = _fixture.BasicProvider;

            CachingCurrencyRateProvider provider = new CachingCurrencyRateProvider(wrappedProvider, TimeSpan.FromMilliseconds(1));

            // Act:
            var result0 = await provider.GetCurrentRatesAsync();

            await Task.Delay(5);

            var result1 = await provider.GetCurrentRatesAsync();

            // Assert:
            Assert.NotSame(result0, result1);
        }
        public void Arrange()
        {
            mock = new Mock <ICurrencyRateProvider>();
            //at this stage mock will generate a FAKE.

            //lets define acceptable behavior for required method
            //fake mock will become stub mock

            mock.Setup(m => m.GetRate(It.IsAny <string>()))
            .Throws(new NotSupportedException(INVALID_CURRENCY_SYMBOL));

            mock.Setup(m => m.GetRate("INR")).Returns(inr);
            mock.Setup(m => m.GetRate("THB")).Returns(thb);
            mock.Setup(m => m.GetRate("EUR")).Returns(eur);
            mock.Setup(m => m.GetRate("USD")).Returns(usd);



            mock.Setup(m => m.GetRate(It.Is <string>(s => s.Length != 3)))
            .Throws(new ArgumentException(INVALID_SYMBOL_FORMAT));

            mock.Setup(m => m.Version).Returns(EXPECTED_API_VERSION);



            mock.Setup(m => m.Add(It.IsAny <string>(), It.IsAny <double>()))
            .Raises(m => m.OnRateUpdate += null, null, ADD_SYMBOL, ADD_VALUE);

            //create a standard get/set property with default value of "demo"
            mock.SetupProperty(m => m.APIEndPoint, DEMO);



            provider  = mock.Object;
            converter = new CurrencyConverter(provider);
        }
Ejemplo n.º 10
0
 public CurrencyController(ICurrencyRateProvider currencyRateProvider)
 {
     _currencyRateProvider = currencyRateProvider;
 }
Ejemplo n.º 11
0
 public CachingCurrencyRateProvider(ICurrencyRateProvider wrappedProvider, TimeSpan timeoutInterval, bool autoAddEur = false)
 {
     _wrappedProvider = wrappedProvider;
     _timeoutInterval = timeoutInterval;
     _autoAddEur      = autoAddEur;
 }
Ejemplo n.º 12
0
 public CurrencyConverter(ICurrencyRateProvider provider)
 {
     this.provider = provider;
 }