From aa0ca788ffd86636d3545954f3d997a29d40f742 Mon Sep 17 00:00:00 2001 From: Tee Date: Tue, 23 Mar 2021 20:26:45 -0400 Subject: [PATCH 1/7] Update testTimeout property in jest.config.js --- jest.config.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jest.config.js b/jest.config.js index 6b5fb31..4dea621 100644 --- a/jest.config.js +++ b/jest.config.js @@ -3,5 +3,5 @@ module.exports = { "transform": { "^.+\\.(ts|tsx)$": "ts-jest" }, - "testTimeout": 30000 + "testTimeout": 300000 } \ No newline at end of file From a2b3fc3333eb2b1703e437fd741916a92cbff722 Mon Sep 17 00:00:00 2001 From: Tee Date: Tue, 23 Mar 2021 20:27:32 -0400 Subject: [PATCH 2/7] Recursively paginate all cards with getAllCards helper --- src/services/cardService.ts | 26 +++++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/src/services/cardService.ts b/src/services/cardService.ts index 11a6e7f..99e94d7 100644 --- a/src/services/cardService.ts +++ b/src/services/cardService.ts @@ -6,6 +6,25 @@ import { Subtype } from '../enums/subtype'; import { Rarity } from '../enums/rarity'; import { Client } from '../client'; +async function paginateAllCards(pageNumber: number, params?: Parameter): Promise { + let currentPage = pageNumber; + const client: Client = Client.getInstance(); + const response: Card[] = await client.get('cards', { ...params, pageSize: 250, page: currentPage }); + + if (response.length === 0) { + return response; + } else { + currentPage++; + return response.concat(await paginateAllCards(currentPage)); + } +} + +export async function getAllCards(params?: Parameter): Promise { + const startingPage = 1; + const response: Card[] = await paginateAllCards(startingPage, params); + return response; +} + export async function findCardByID(id: string): Promise { const client: Client = Client.getInstance(); const response: Card = await client.get('cards', id); @@ -18,13 +37,6 @@ export async function findCardsByQueries(params: Parameter): Promise { return response; } -export async function getAllCards(): Promise { - const params: Parameter = { pageSize: 250 }; - const client: Client = Client.getInstance(); - const response: Card[] = await client.get('cards', params); - return response; -} - export async function getTypes(): Promise { const client: Client = Client.getInstance(); From 192197371296799a53e5a672025e0d45baaa0a29 Mon Sep 17 00:00:00 2001 From: Tee Date: Tue, 23 Mar 2021 20:35:20 -0400 Subject: [PATCH 3/7] Test recursive pagination with total card length --- test/cardService.test.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/test/cardService.test.ts b/test/cardService.test.ts index fdab088..ed5eda9 100644 --- a/test/cardService.test.ts +++ b/test/cardService.test.ts @@ -20,8 +20,9 @@ describe('Card Service', () => { }) it('should get a default list of cards using the cards resource with no query params', async () => { + const totalCards = 13438; const results: Card[] = await getAllCards(); - expect(results).toHaveLength(250); + expect(results).toHaveLength(totalCards); }); it('should get a list of card supertypes', async () => { From 2e34be017fe772bc1c9bae803d89ce4db269ca6d Mon Sep 17 00:00:00 2001 From: Tee Date: Tue, 23 Mar 2021 20:37:05 -0400 Subject: [PATCH 4/7] Update beta version --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 64b5fd8..ca23d46 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "pokemon-tcg-sdk-typescript", - "version": "2.0.0", + "version": "2.0.0-beta.2", "description": "Typescript SDK for the PokemonTCG API (https://pokemontcg.io)", "main": "dist/index.js", "types": "dist/index.d.ts", From 59cba1b83171bad07cf7b0d26a1a7e9a8a1630c7 Mon Sep 17 00:00:00 2001 From: Tee Date: Tue, 23 Mar 2021 21:26:03 -0400 Subject: [PATCH 5/7] Update recursive pagination helper --- src/services/cardService.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/services/cardService.ts b/src/services/cardService.ts index 99e94d7..ddb0b73 100644 --- a/src/services/cardService.ts +++ b/src/services/cardService.ts @@ -9,7 +9,7 @@ import { Client } from '../client'; async function paginateAllCards(pageNumber: number, params?: Parameter): Promise { let currentPage = pageNumber; const client: Client = Client.getInstance(); - const response: Card[] = await client.get('cards', { ...params, pageSize: 250, page: currentPage }); + const response: Card[] = await client.get('cards', { pageSize: 250, page: currentPage, ...params }); if (response.length === 0) { return response; From 4cb8376cd184e21cef350a51d2533bc61489ca5c Mon Sep 17 00:00:00 2001 From: Tee Date: Tue, 23 Mar 2021 21:26:22 -0400 Subject: [PATCH 6/7] Test default max for card retrieval --- test/cardService.test.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/test/cardService.test.ts b/test/cardService.test.ts index ed5eda9..240f0d5 100644 --- a/test/cardService.test.ts +++ b/test/cardService.test.ts @@ -19,10 +19,10 @@ describe('Card Service', () => { expect(result.name).toEqual('Gardevoir'); }) - it('should get a default list of cards using the cards resource with no query params', async () => { - const totalCards = 13438; - const results: Card[] = await getAllCards(); - expect(results).toHaveLength(totalCards); + it('should get a maximum of 250 cards given a page number by default', async () => { + const totalCards = 250 + const results: Card[] = await findCardsByQueries({ page: 1}); + expect(results).toHaveLength(250); }); it('should get a list of card supertypes', async () => { From e681d3a8db0265164f30003431ce61c70fd7dd5d Mon Sep 17 00:00:00 2001 From: Tee Date: Tue, 23 Mar 2021 21:28:19 -0400 Subject: [PATCH 7/7] Resolve TypeScript card test warnings --- test/cardService.test.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/cardService.test.ts b/test/cardService.test.ts index 240f0d5..da4cc42 100644 --- a/test/cardService.test.ts +++ b/test/cardService.test.ts @@ -1,4 +1,4 @@ -import { findCardByID, findCardsByQueries, getAllCards, getSupertypes, getSubtypes, getTypes, getRarities } from "../src/services/cardService"; +import { findCardByID, findCardsByQueries, getSupertypes, getSubtypes, getTypes, getRarities } from "../src/services/cardService"; import { Parameter } from "../src/interfaces/parameter"; import { Card } from "../src/interfaces/card"; import { Type } from '../src/enums/type'; @@ -22,7 +22,7 @@ describe('Card Service', () => { it('should get a maximum of 250 cards given a page number by default', async () => { const totalCards = 250 const results: Card[] = await findCardsByQueries({ page: 1}); - expect(results).toHaveLength(250); + expect(results).toHaveLength(totalCards); }); it('should get a list of card supertypes', async () => {