diff --git a/__tests__/basic.test.js b/__tests__/basic.test.js new file mode 100644 index 0000000..fc29f71 --- /dev/null +++ b/__tests__/basic.test.js @@ -0,0 +1,66 @@ +const TCGdex = require("../dist/cjs/tcgdex.js").default +const fetch = require('node-fetch') + +const fakeFetch = (response, status = 200) => jest.fn(() => + Promise.resolve({ + status: status, + json: () => Promise.resolve(response), + }) +); + + + +test('Basic test', async () => { + const tcgdex = new TCGdex('en') + TCGdex.fetch = fakeFetch({ok: true}) + const res = await tcgdex.fetch('cards', 'basic-test') + expect(res).toEqual({ok: true}) + expect(TCGdex.fetch).toHaveBeenCalledTimes(1) +}) + +test('Cache test', async () => { + const tcgdex = new TCGdex('en') + TCGdex.fetch = fakeFetch({ok: 'a'}) + const res1 = await tcgdex.fetch('cards', 'cache-test') + expect(res1).toEqual({ok: 'a'}) + TCGdex.fetch = fakeFetch({ok: 'b'}) + const res2 = await tcgdex.fetch('cards', 'cache-test') + expect(res2).toEqual({ok: 'a'}) +}) + +test('endpoint errors', async () => { + const tcgdex = new TCGdex('en') + TCGdex.fetch = fakeFetch({ok: 'a'}) + await expect(tcgdex.fetch('non existing endpoint')).rejects.toThrow() + await expect(tcgdex.fetch()).rejects.toThrow() +}) + +test('404 test', async () => { + const tcgdex = new TCGdex('en') + TCGdex.fetch = fakeFetch(undefined, 404) + expect( + await tcgdex.fetch('cards', '404-test') + ).not.toBeDefined() +}) + +test('test real endpoints', async () => { + const tcgdex = new TCGdex('en') + TCGdex.fetch = fetch + const endpoints = [ + {endpoint: 'fetchCard', params: ['swsh1-1']}, + {endpoint: 'fetchCard', params: ['1', 'Sword & Shield']}, + {endpoint: 'fetchCards', params: ['swsh1']}, + {endpoint: 'fetchCards', params: []}, + {endpoint: 'fetchSet', params: ['swsh1']}, + {endpoint: 'fetchSets', params: ['swsh']}, + {endpoint: 'fetchSets', params: []}, + {endpoint: 'fetchSeries', params: []}, + {endpoint: 'fetchSerie', params: ['swsh']}, + ] + + for await (const item of endpoints) { + expect( + await tcgdex[item.endpoint](...item.params) + ).toBeDefined() + } +}) diff --git a/package.json b/package.json index 7170c11..1ca1c5a 100644 --- a/package.json +++ b/package.json @@ -2,21 +2,23 @@ "name": "@tcgdex/sdk", "version": "2.3.0-beta.2", "main": "./dist/cjs/tcgdex.node.js", - "module": "./dist/modules/tcgdex.node.js", "types": "./dist/types/tcgdex.d.ts", "repository": "https://github.com/tcgdex/javascript-sdk.git", "license": "MIT", "devDependencies": { - "@parcel/packager-ts": "2.0.0-beta.2", "@types/node-fetch": "^2.5.10", - "awesome-typescript-loader": "^5.2.1", + "jest": "^27.0.5", + "ts-loader": "^9.2.3", "ts-node": "^10.0.0", "typescript": "^4.1.3", "webpack": "^5.40.0", "webpack-nano": "^1.1.1" }, + "engines": { + "node": ">=12" + }, "dependencies": { - "node-fetch": "^2.6.1", + "isomorphic-unfetch": "^3.1.0", "unfetch": "^4.2.0" }, "scripts": { @@ -29,16 +31,5 @@ "files": [ "dist" ], - "sideEffects": false, - "targets": { - "browser": { - "context": "browser", - "engines": { - "browsers": "since 2017-06" - }, - "includeNodeModules": true, - "optimize": false, - "scopeHoist": false - } - } + "sideEffects": false } diff --git a/src/tcgdex.node.ts b/src/tcgdex.node.ts index 999c258..130fc70 100644 --- a/src/tcgdex.node.ts +++ b/src/tcgdex.node.ts @@ -1,5 +1,5 @@ import TCGdex from './tcgdex' -import fetch from 'node-fetch' +import fetch from 'isomorphic-unfetch' TCGdex.fetch = fetch as any diff --git a/webpack.config.js b/webpack.config.js index 70c30a1..a1551e4 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -19,12 +19,15 @@ module.exports = { module: { rules: [{ test: /\.ts$/, - loader: 'awesome-typescript-loader', + loader: 'ts-loader', exclude: /node_modules/, options: { - sourceMap: false, - declarationDir: false, - target: 'ES2016' + compilerOptions: { + sourceMap: false, + declaration: false, + declarationDir: null, + target: 'ES2016' + } } }] }