public async Task SaveDataFeed() { var mapper = new DataFeedMapper(); var configuration = new Mock <IDataFeedRepositoryConfiguration>(); configuration.Setup(c => c.StorageFolderPath).Returns(storageFolderPath); var repository = new DataFeedRepository(configuration.Object, mapper); var dataFeed = new DataFeed() { Base = "EUR", Success = true, Timestamp = 1541819346, Rates = new Dictionary <string, decimal>() { { "ETB", 31.813406m }, { "EUR", 1m }, { "GBP", 0.873592m } } }; await repository.SaveAsync(dataFeed); var fileName = Directory.GetFiles(storageFolderPath).FirstOrDefault(f => f.EndsWith("ExchangeRate_20181110140906.json")); Assert.IsNotNull(fileName); Assert.IsTrue(new FileInfo(fileName).Length > 0, "File size is zero"); }
public async Task DownloadNewDataFeed() { await new Startup().RunAsync(); var mapper = new DataFeedMapper(); var configuration = new Mock <IDataFeedRepositoryConfiguration>(); configuration.Setup(c => c.StorageFolderPath).Returns(Path.Combine(Path.GetTempPath(), "ExchangeRates")); var repository = new DataFeedRepository(configuration.Object, mapper); var dataFeed = await repository.LoadAsync(); Assert.IsNotNull(dataFeed, "Should load DataFeed"); }
public async Task RunAsync() { var configuration = new DataFeedManagerConfiguration() { ServiceUrl = @"http://data.fixer.io/api/latest?access_key=c2510f9a89d59e5f17e511157b0bcb41", StorageFolderPath = Path.Combine(Path.GetTempPath(), "ExchangeRates") }; var mapper = new DataFeedMapper(); var repository = new DataFeedRepository(configuration, mapper); var service = new DataFeedService(repository); using (var httpClient = new HttpClient()) { var downloadClient = new HttpDownloadClient(httpClient); var manager = new DataFeedManager(configuration, downloadClient, mapper, service); await manager.DownloadAsync(); } }
public async Task ReadLatestDataFeed() { var mapper = new DataFeedMapper(); var configuration = new Mock <IDataFeedRepositoryConfiguration>(); configuration.Setup(c => c.StorageFolderPath).Returns(storageFolderPath); var repository = new DataFeedRepository(configuration.Object, mapper); var dataFeed1 = new DataFeed() { Base = "EUR", Success = true, Timestamp = 1541819346, Rates = new Dictionary <string, decimal>() { { "ETB", 31.813406m }, { "EUR", 1m }, { "GBP", 0.873592m } } }; await repository.SaveAsync(dataFeed1); var dataFeed2 = new DataFeed() { Base = "EUR", Success = true, Timestamp = 1541819446, Rates = new Dictionary <string, decimal>() { { "ETB", 31.813406m }, { "EUR", 1m }, { "GBP", 0.873592m } } }; await repository.SaveAsync(dataFeed2); var dataFeed = await repository.LoadAsync(); Assert.AreEqual(dataFeed2.Timestamp, dataFeed.Timestamp, "Should load latest DataFeed"); }