public async Task <List <CountryAggregateModel> > GetCountriesAggregatedData() { try { var dataSourceOneDataRaw = await dbManager.GetCountriesAndPopulation(); if (dataSourceOneDataRaw == null) { throw new InvalidOperationException("An error occured while getting data from data source one.\n"); } var dataSourceTwoDataRaw = await statService.GetCountryPopulationsAsync(); if (dataSourceTwoDataRaw == null) { throw new InvalidOperationException("An error occured while getting data from data source two.\n"); } var datasourceOneData = dataSourceOneDataRaw .Select(c => new CountryAggregateModel() { Name = countryNameMappingService.MapCountryNameToIso3166(c.Country.CountryName), Population = c.Population }); var datasourceTwoData = dataSourceTwoDataRaw .Select((Tuple <string, int> c) => { var name = countryNameMappingService.MapCountryNameToIso3166(c.Item1); var population = c.Item2; return(new CountryAggregateModel() { Name = name, Population = population }); }) .ToList(); return(datasourceOneData .Union(datasourceTwoData) .Select(c => new CountryAggregateModel() { Name = c.Name, Population = c.Population }) .OrderBy(c => c.Name) .ToList()); } catch (InvalidOperationException) { throw; } }
public async Task ShouldExecuteQuery() { var countries = await dbManager.GetCountriesAndPopulation(); Assert.IsNotEmpty(countries); }