public async Task UtiliseCacheWithHeroData() { var cache = new MemoryCache(new MemoryCacheOptions()); var cacheProvider = new CacheProvider(cache); var prismicCacheProvider = new PrismicCacheProvider(cacheProvider); var prismicService = new PrismicGenericService(new NullLogger <PrismicGenericService>(), _fixture.HttpClient, TestCacheFactory.BuildPrismicCacheProvider(), _fixture.Configuration); var prismicHeroService = new PrismicHeroService(prismicService, prismicCacheProvider); var timer = new Stopwatch(); timer.Start(); var result1 = await prismicHeroService.GetHeroes(); timer.Stop(); _outputHelper.WriteLine($"Time for first result: { timer.Elapsed }"); timer.Restart(); var result2 = await prismicHeroService.GetHeroes(); timer.Stop(); _outputHelper.WriteLine($"Time for second result: {timer.Elapsed}"); var roles = await prismicHeroService.GetRoles(); var roleCategories = await prismicHeroService.GetRoleCategories(); var universes = await prismicHeroService.GetUniverses(); var inGameCategories = await prismicHeroService.GetInGameCategories(); var firstHero = result1.FirstOrDefault(); Assert.Same(result1, result2); var category = firstHero?.InGameCategories?.FirstOrDefault(); Assert.NotNull(category); Assert.Same(category, inGameCategories.SingleOrDefault(x => x.Id == category.Id)); var role = firstHero?.Roles?.FirstOrDefault(); Assert.NotNull(role); Assert.Same(role, roles.SingleOrDefault(x => x.Id == role.Id)); var roleCategory = firstHero?.Roles?.FirstOrDefault()?.RoleCategory; Assert.NotNull(roleCategory); Assert.Same(roleCategory, roleCategories.SingleOrDefault(x => x.Id == roleCategory.Id)); var universe = firstHero?.Universe; Assert.NotNull(universe); Assert.Same(universe, universes.SingleOrDefault(x => x.Id == universe.Id)); var inGameCategory = firstHero?.InGameCategories?.FirstOrDefault(); Assert.NotNull(inGameCategory); Assert.Same(inGameCategory, inGameCategories.SingleOrDefault(x => x.Id == inGameCategory.Id)); }
public async Task GetHeroes() { var prismicService = new PrismicGenericService(new NullLogger <PrismicGenericService>(), _fixture.HttpClient, TestCacheFactory.BuildPrismicCacheProvider(), _fixture.Configuration); var prismicHeroService = new PrismicHeroService(prismicService, TestCacheFactory.BuildPrismicCacheProvider()); var result = await prismicHeroService.GetHeroes(); Assert.NotEmpty(result); Assert.Contains(result, x => x.Roles.Any(y => y.RoleCategory != null)); Assert.Contains(result, x => x.InGameCategories.Any()); }