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]); }
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); }
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); }
public CurrencyController(ICurrencyRateProvider currencyRateProvider) { _currencyRateProvider = currencyRateProvider; }
public CachingCurrencyRateProvider(ICurrencyRateProvider wrappedProvider, TimeSpan timeoutInterval, bool autoAddEur = false) { _wrappedProvider = wrappedProvider; _timeoutInterval = timeoutInterval; _autoAddEur = autoAddEur; }
public CurrencyConverter(ICurrencyRateProvider provider) { this.provider = provider; }