Ejemplo n.º 1
0
        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();
        }
Ejemplo n.º 2
0
        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();
        }
Ejemplo n.º 3
0
        public async Task GetEvolutionChainPagedResourceIntegrationTest()
        {
            // assemble
            PokeApiClient client = new PokeApiClient();

            // act
            ApiResourceList <EvolutionChain> page = await client.GetApiResourcePageAsync <EvolutionChain>();

            // assert
            Assert.True(page.Results.Any());
        }
Ejemplo n.º 4
0
        public async Task GetSuperContestEffectPagedResourceIntegrationTest()
        {
            // assemble
            PokeApiClient client = new PokeApiClient();

            // act
            ApiResourceList <SuperContestEffect> page = await client.GetApiResourcePageAsync <SuperContestEffect>();

            // assert
            Assert.True(page.Results.Any());
        }
Ejemplo n.º 5
0
        public async Task GetCharacteristicPagedResourceIntegrationTest()
        {
            // assemble
            PokeApiClient client = new PokeApiClient();

            // act
            ApiResourceList <Characteristic> page = await client.GetApiResourcePageAsync <Characteristic>();

            // assert
            Assert.True(page.Results.Any());
        }
Ejemplo n.º 6
0
        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();
        }
Ejemplo n.º 7
0
        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); });
        }
Ejemplo n.º 8
0
        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();
        }
Ejemplo n.º 9
0
        /// <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);
        }