public async Task ClearResourceListCacheOfSpecificType() { // assemble PokeApiClient sut = CreateSut(); mockHttp.Expect("*machine") .Respond("application/json", JsonConvert.SerializeObject(CreateFakeApiResourceList <Machine>())); mockHttp.Expect("*berry") .Respond("application/json", JsonConvert.SerializeObject(CreateFakeNamedResourceList <Berry>())); mockHttp.Expect("*machine") .Respond("application/json", JsonConvert.SerializeObject(CreateFakeApiResourceList <Machine>())); // act await sut.GetApiResourcePageAsync <Machine>(); await sut.GetNamedResourcePageAsync <Berry>(); sut.ClearResourceListCache <Machine>(); await sut.GetApiResourcePageAsync <Machine>(); await sut.GetNamedResourcePageAsync <Berry>(); // assert mockHttp.VerifyNoOutstandingExpectation(); }
public async Task GetApiResourcePage_WithSamePaginationParams_CacheHit() { // assemble PokeApiClient sut = CreateSut(); mockHttp.Expect("*") .Respond("application/json", JsonConvert.SerializeObject(CreateFakeApiResourceList <Machine>())); mockHttp.When("*") .Throw(new Exception("Cache miss")); // act await sut.GetApiResourcePageAsync <Machine>(); await sut.GetApiResourcePageAsync <Machine>(); // assert mockHttp.VerifyNoOutstandingExpectation(); }
public async Task GetEvolutionChainPagedResourceIntegrationTest() { // assemble PokeApiClient client = new PokeApiClient(); // act ApiResourceList <EvolutionChain> page = await client.GetApiResourcePageAsync <EvolutionChain>(); // assert Assert.True(page.Results.Any()); }
public async Task GetSuperContestEffectPagedResourceIntegrationTest() { // assemble PokeApiClient client = new PokeApiClient(); // act ApiResourceList <SuperContestEffect> page = await client.GetApiResourcePageAsync <SuperContestEffect>(); // assert Assert.True(page.Results.Any()); }
public async Task GetCharacteristicPagedResourceIntegrationTest() { // assemble PokeApiClient client = new PokeApiClient(); // act ApiResourceList <Characteristic> page = await client.GetApiResourcePageAsync <Characteristic>(); // assert Assert.True(page.Results.Any()); }
public async Task GetApiResourcePage_WithDifferentPaginationParams_CacheMiss() { // assemble (int limit, int offset) = (30, 2); PokeApiClient sut = CreateSut(); mockHttp.Expect("*") .Respond("application/json", JsonConvert.SerializeObject(CreateFakeApiResourceList <Machine>())); mockHttp.Expect("*") .WithExactQueryString(ToPairs(limit, offset)) .Respond("application/json", JsonConvert.SerializeObject(CreateFakeApiResourceList <Machine>())); // act await sut.GetApiResourcePageAsync <Machine>(); await sut.GetApiResourcePageAsync <Machine>(limit, offset); // assert mockHttp.VerifyNoOutstandingExpectation(); }
public async Task GetApiResourcePageLimitOffsetAsyncCancellation() { // assemble NamedApiResourceList <Berry> berryPage = new NamedApiResourceList <Berry>(); MockHttpMessageHandler mockHttp = new MockHttpMessageHandler(); mockHttp.Expect("*evolution-chain?limit=1&offset=50").Respond("application/json", JsonConvert.SerializeObject(berryPage)); PokeApiClient client = new PokeApiClient(mockHttp); CancellationToken cancellationToken = new CancellationToken(true); // act / assert await Assert.ThrowsAsync <OperationCanceledException>(async() => { await client.GetApiResourcePageAsync <EvolutionChain>(1, 50, cancellationToken); }); }
public async Task GetApiResourcePageLimitOffsetAsync() { // assemble NamedApiResourceList <Berry> berryPage = new NamedApiResourceList <Berry>(); MockHttpMessageHandler mockHttp = new MockHttpMessageHandler(); mockHttp.Expect("*evolution-chain?limit=1&offset=50").Respond("application/json", JsonConvert.SerializeObject(berryPage)); PokeApiClient client = new PokeApiClient(mockHttp); // act ApiResourceList <EvolutionChain> page = await client.GetApiResourcePageAsync <EvolutionChain>(1, 50); // assert mockHttp.VerifyNoOutstandingExpectation(); }
/// <summary> /// Wrapper for <see cref="PokeApiClient.GetApiResourcePageAsync{T}()"/> with exception logging. /// </summary> public async Task <ApiResourceList <T> > GetPage <T>(int limit, int offset) where T : ApiResource { var call = $"GetPage<{typeof(T)}>(limit={limit}, offset={offset})"; ApiResourceList <T> resList; try { Logger.LogInformation($"{call} started..."); resList = await PokeApiClient.GetApiResourcePageAsync <T>(limit, offset); Logger.LogInformation($"{call} finished."); } catch (Exception e) { Logger.LogError(e, $"{call} failed."); throw; } return(resList); }