From f4da62b07aa4ff591b6e007d00ec8d868981f031 Mon Sep 17 00:00:00 2001 From: Gabb-c Date: Mon, 8 Apr 2024 15:29:26 -0300 Subject: [PATCH] test: refactor tests --- .github/workflows/build.yml | 2 +- .github/workflows/stable.yml | 8 +- .github/workflows/test.yml | 2 +- docs/src/guides/logging.md | 4 +- docs/src/index.md | 14 +- package.json | 7 +- pnpm-lock.yaml | 213 ++++++++++++++++++ {src/__tests__ => tests/berry}/berry.spec.ts | 34 +-- tests/berry/berry.test-d.ts | 1 + tests/berry/mocks.ts | 69 ++++++ .../contest}/contest.spec.ts | 32 +-- tests/contest/contest.test-d.ts | 1 + tests/contest/mocks.ts | 1 + .../encounter}/encounter.spec.ts | 33 +-- tests/encounter/encouter.test-d.ts | 1 + tests/encounter/mocks.ts | 1 + .../evolution}/evolution.spec.ts | 20 +- tests/evolution/evolution.test-d.ts | 1 + tests/evolution/mocks.ts | 1 + {src/__tests__ => tests/game}/game.spec.ts | 24 +- tests/game/game.test-d.ts | 1 + tests/game/mocks.ts | 1 + {src/__tests__ => tests/item}/item.spec.ts | 39 +--- tests/item/item.test-d.ts | 1 + tests/item/mocks.ts | 1 + .../location}/location.spec.ts | 27 +-- tests/location/location.test-d.ts | 1 + tests/location/mocks.ts | 1 + .../__tests__ => tests/logger}/logger.spec.ts | 2 +- .../machine}/machine.spec.ts | 13 +- tests/machine/machine.test-d.ts | 1 + tests/machine/mocks.ts | 1 + {src/__tests__ => tests/main}/main.spec.ts | 58 ++--- tests/main/main.test-d.ts | 1 + tests/main/mocks.ts | 1 + tests/move/mocks.ts | 1 + {src/__tests__ => tests/move}/move.spec.ts | 46 +--- tests/move/move.test-d.ts | 1 + tests/pokemon/mocks.ts | 1 + .../pokemon}/pokemon.spec.ts | 100 +------- tests/pokemon/pokemon.test-d.ts | 1 + tests/setup.ts | 12 + tests/utility/mocks.ts | 1 + .../utility}/utility.spec.ts | 20 +- tests/utility/utility.test-d.ts | 1 + vitest.config.mts => vitest.config.ts | 7 +- 46 files changed, 441 insertions(+), 368 deletions(-) rename {src/__tests__ => tests/berry}/berry.spec.ts (77%) create mode 100644 tests/berry/berry.test-d.ts create mode 100644 tests/berry/mocks.ts rename {src/__tests__ => tests/contest}/contest.spec.ts (66%) create mode 100644 tests/contest/contest.test-d.ts create mode 100644 tests/contest/mocks.ts rename {src/__tests__ => tests/encounter}/encounter.spec.ts (68%) create mode 100644 tests/encounter/encouter.test-d.ts create mode 100644 tests/encounter/mocks.ts rename {src/__tests__ => tests/evolution}/evolution.spec.ts (63%) create mode 100644 tests/evolution/evolution.test-d.ts create mode 100644 tests/evolution/mocks.ts rename {src/__tests__ => tests/game}/game.spec.ts (73%) create mode 100644 tests/game/game.test-d.ts create mode 100644 tests/game/mocks.ts rename {src/__tests__ => tests/item}/item.spec.ts (71%) create mode 100644 tests/item/item.test-d.ts create mode 100644 tests/item/mocks.ts rename {src/__tests__ => tests/location}/location.spec.ts (70%) create mode 100644 tests/location/location.test-d.ts create mode 100644 tests/location/mocks.ts rename {src/__tests__ => tests/logger}/logger.spec.ts (98%) rename {src/__tests__ => tests/machine}/machine.spec.ts (61%) create mode 100644 tests/machine/machine.test-d.ts create mode 100644 tests/machine/mocks.ts rename {src/__tests__ => tests/main}/main.spec.ts (56%) create mode 100644 tests/main/main.test-d.ts create mode 100644 tests/main/mocks.ts create mode 100644 tests/move/mocks.ts rename {src/__tests__ => tests/move}/move.spec.ts (74%) create mode 100644 tests/move/move.test-d.ts create mode 100644 tests/pokemon/mocks.ts rename {src/__tests__ => tests/pokemon}/pokemon.spec.ts (71%) create mode 100644 tests/pokemon/pokemon.test-d.ts create mode 100644 tests/setup.ts create mode 100644 tests/utility/mocks.ts rename {src/__tests__ => tests/utility}/utility.spec.ts (61%) create mode 100644 tests/utility/utility.test-d.ts rename vitest.config.mts => vitest.config.ts (59%) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index f74363db..7a4e9769 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -38,7 +38,7 @@ jobs: run: pnpm install --frozen-lockfile - name: Build - run: pnpm size + run: pnpm build - name: Build Docs run: pnpm docs:build diff --git a/.github/workflows/stable.yml b/.github/workflows/stable.yml index 3ab20885..2c8f0eab 100644 --- a/.github/workflows/stable.yml +++ b/.github/workflows/stable.yml @@ -28,17 +28,11 @@ jobs: - name: Install dependencies run: pnpm install --frozen-lockfile - - name: Lint (Rome) - run: pnpm lint - - - name: Format (Rome) - run: pnpm format - - name: Build run: pnpm build - name: Test - run: pnpm test:ci + run: pnpm test release: name: Release diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 6ed6e156..8c783a7a 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -33,4 +33,4 @@ jobs: run: pnpm install --frozen-lockfile - name: Run tests - run: pnpm test:ci + run: pnpm test diff --git a/docs/src/guides/logging.md b/docs/src/guides/logging.md index 5a33772f..0d3aeb26 100644 --- a/docs/src/guides/logging.md +++ b/docs/src/guides/logging.md @@ -8,7 +8,7 @@ Every client in Pokenode-ts can display logs from requests and responses. To enable logs just pass `logs: true`: -```js +```ts import { BerryClient } from 'pokenode-ts'; const api = new BerryClient({ logs: true }); // Enable logs @@ -16,7 +16,7 @@ const api = new BerryClient({ logs: true }); // Enable logs Will output: -```log +``` // success [ Request Config ] GET | /berry/cheri [ Response ] STATUS 200 | CACHED diff --git a/docs/src/index.md b/docs/src/index.md index d23f9ae3..93739610 100644 --- a/docs/src/index.md +++ b/docs/src/index.md @@ -3,8 +3,8 @@ layout: home hero: name: Pokenode-ts - text: Type-safe Configurable Lightweight - tagline: A lightweight Node.js wrapper for the PokéAPI with built-in types. + text: Type-Safe, Configurable, Lightweight + tagline: A powerful Node.js wrapper for the PokéAPI with built-in types. actions: - theme: brand text: Get Started @@ -15,12 +15,12 @@ hero: features: - icon: 🛠️ - title: Built-in Typings - details: Pokenode-ts contains up-to-date typings, based on the PokéAPI Documentation. + title: Built-in Types + details: Pokenode-ts includes up-to-date type definitions based on the PokéAPI documentation, ensuring type safety and improved developer experience. - icon: 📦 title: Request Cache - details: Utilize Axios auto-cache feature to optimize your app's performance. Store request results to prevent unnecessary network requests. + details: Leverages Axios auto-cache feature to optimize performance. Store API responses to minimize unnecessary network requests. - icon: 🌲 - title: Logs - details: Display logs for development purposes. + title: Logging + details: Provides logging functionality for development and debugging purposes. --- diff --git a/package.json b/package.json index b59b8f91..06673c87 100644 --- a/package.json +++ b/package.json @@ -34,7 +34,7 @@ "types": "lib/index.d.ts", "files": ["lib"], "scripts": { - "build": "tsup --config tsup.config.ts", + "build": "tsup --config tsup.config.ts && size-limit", "docs:build": "vitepress build docs", "docs:dev": "vitepress dev docs --force", "docs:preview": "vitepress preview docs", @@ -42,10 +42,8 @@ "lint:ci": "biome ci src", "prepare": "is-ci || husky install", "prepublishOnly": "pnpm build", - "size": "pnpm build && size-limit", - "test:ci": "vitest --silent --run", + "test": "vitest", "test:coverage": "vitest run --coverage", - "test:dev": "vitest -w", "test:ui": "vitest --ui --api 9527" }, "devDependencies": { @@ -72,6 +70,7 @@ "husky": "^9.0.11", "is-ci": "^3.0.1", "lint-staged": "^15.2.2", + "msw": "^2.2.13", "semantic-release": "^23.0.7", "size-limit": "^11.1.2", "tsup": "^8.0.2", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f67b249b..c73d3054 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -74,6 +74,9 @@ devDependencies: lint-staged: specifier: ^15.2.2 version: 15.2.2 + msw: + specifier: ^2.2.13 + version: 2.2.13(typescript@5.4.4) semantic-release: specifier: ^23.0.7 version: 23.0.7(typescript@5.4.4) @@ -415,6 +418,18 @@ packages: dev: true optional: true + /@bundled-es-modules/cookie@2.0.0: + resolution: {integrity: sha512-Or6YHg/kamKHpxULAdSqhGqnWFneIXu1NKvvfBBzKGwpVsYuFIQ5aBPHDnnoR3ghW1nvSkALd+EF9iMtY7Vjxw==} + dependencies: + cookie: 0.5.0 + dev: true + + /@bundled-es-modules/statuses@1.0.1: + resolution: {integrity: sha512-yn7BklA5acgcBr+7w064fGV+SGIFySjCKpqjcWgBAIfrAkY+4GQTJJHQMeT3V/sgz23VTEVV8TtOmkvJAhFVfg==} + dependencies: + statuses: 2.0.1 + dev: true + /@colors/colors@1.5.0: resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} engines: {node: '>=0.1.90'} @@ -1041,6 +1056,38 @@ packages: dev: true optional: true + /@inquirer/confirm@3.1.2: + resolution: {integrity: sha512-xQeRxRpVOQdBinIyOHX9+/nTrvt84NnaP8hym5ARdLr6a5T1ckowx70sEaItgULBHlxSIJL970BoRfFxlzO2IA==} + engines: {node: '>=18'} + dependencies: + '@inquirer/core': 7.1.2 + '@inquirer/type': 1.2.1 + dev: true + + /@inquirer/core@7.1.2: + resolution: {integrity: sha512-ne5VhDqruYYzx8mmjDZ9F58ymrLJGxmSHJUcJGiW3tifzvl3goAm6gNX11w6+zUnGE54vgQ6ALDXL3IOSezMRw==} + engines: {node: '>=18'} + dependencies: + '@inquirer/type': 1.2.1 + '@types/mute-stream': 0.0.4 + '@types/node': 20.12.5 + '@types/wrap-ansi': 3.0.0 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + cli-spinners: 2.9.2 + cli-width: 4.1.0 + figures: 3.2.0 + mute-stream: 1.0.0 + signal-exit: 4.1.0 + strip-ansi: 6.0.1 + wrap-ansi: 6.2.0 + dev: true + + /@inquirer/type@1.2.1: + resolution: {integrity: sha512-xwMfkPAxeo8Ji/IxfUSqzRi0/+F2GIqJmpc5/thelgMGsjNZcjDDRBO9TLXT1s/hdx/mK5QbVIvgoLIFgXhTMQ==} + engines: {node: '>=18'} + dev: true + /@isaacs/cliui@8.0.2: resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} engines: {node: '>=12'} @@ -1102,6 +1149,23 @@ packages: '@jridgewell/sourcemap-codec': 1.4.15 dev: true + /@mswjs/cookies@1.1.0: + resolution: {integrity: sha512-0ZcCVQxifZmhwNBoQIrystCb+2sWBY2Zw8lpfJBPCHGCA/HWqehITeCRVIv4VMy8MPlaHo2w2pTHFV2pFfqKPw==} + engines: {node: '>=18'} + dev: true + + /@mswjs/interceptors@0.26.15: + resolution: {integrity: sha512-HM47Lu1YFmnYHKMBynFfjCp0U/yRskHj/8QEJW0CBEPOlw8Gkmjfll+S9b8M7V5CNDw2/ciRxjjnWeaCiblSIQ==} + engines: {node: '>=18'} + dependencies: + '@open-draft/deferred-promise': 2.2.0 + '@open-draft/logger': 0.3.0 + '@open-draft/until': 2.1.0 + is-node-process: 1.2.0 + outvariant: 1.4.2 + strict-event-emitter: 0.5.1 + dev: true + /@nodelib/fs.scandir@2.1.5: resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} @@ -1228,6 +1292,21 @@ packages: '@octokit/openapi-types': 21.2.0 dev: true + /@open-draft/deferred-promise@2.2.0: + resolution: {integrity: sha512-CecwLWx3rhxVQF6V4bAgPS5t+So2sTbPgAzafKkVizyi7tlwpcFpdFqq+wqF2OwNBmqFuu6tOyouTuxgpMfzmA==} + dev: true + + /@open-draft/logger@0.3.0: + resolution: {integrity: sha512-X2g45fzhxH238HKO4xbSr7+wBS8Fvw6ixhTDuvLd5mqh6bJJCFAPwU9mPDxbcrRtfxv4u5IHCEH77BmxvXmmxQ==} + dependencies: + is-node-process: 1.2.0 + outvariant: 1.4.2 + dev: true + + /@open-draft/until@2.1.0: + resolution: {integrity: sha512-U69T3ItWHvLwGg5eJ0n3I62nWuE6ilHlmz7zM0npLBRvPRd7e6NYmg54vvRtP5mZG7kZqZCFVdsTWo7BPtBujg==} + dev: true + /@pkgjs/parseargs@0.11.0: resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} engines: {node: '>=14'} @@ -1781,6 +1860,10 @@ packages: '@types/node': 20.12.5 dev: true + /@types/cookie@0.6.0: + resolution: {integrity: sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==} + dev: true + /@types/estree@1.0.5: resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} dev: true @@ -1810,6 +1893,12 @@ packages: resolution: {integrity: sha512-6L6VymKTzYSrEf4Nev4Xa1LCHKrlTlYCBMTlQKFuddo1CvQcE52I0mwfOJayueUC7MJuXOeHTcIU683lzd0cUA==} dev: true + /@types/mute-stream@0.0.4: + resolution: {integrity: sha512-CPM9nzrCPPJHQNA9keH9CVkVI+WR5kMa+7XEs5jcGQ0VoAGnLv242w8lIVgwAEfmE4oufJRaTc9PNLQl0ioAow==} + dependencies: + '@types/node': 20.12.5 + dev: true + /@types/node@20.12.5: resolution: {integrity: sha512-BD+BjQ9LS/D8ST9p5uqBxghlN+S42iuNxjsUGjeZobe/ciXzk2qb1B6IXc6AnRLS+yFJRpN2IPEHMzwspfDJNw==} dependencies: @@ -1820,10 +1909,18 @@ packages: resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} dev: true + /@types/statuses@2.0.5: + resolution: {integrity: sha512-jmIUGWrAiwu3dZpxntxieC+1n/5c3mjrImkmOSQ2NC5uP6cYO4aAZDdSmRcI5C1oiTmqlZGHC+/NmJrKogbP5A==} + dev: true + /@types/web-bluetooth@0.0.20: resolution: {integrity: sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow==} dev: true + /@types/wrap-ansi@3.0.0: + resolution: {integrity: sha512-ltIpx+kM7g/MLRZfkbL7EsCEjfzCcScLpkg37eXEtx5kmrAKBkTJwd1GIAjDSL8wTpM6Hzn5YO4pSb91BEwu1g==} + dev: true + /@vitejs/plugin-vue@5.0.4(vite@5.2.4)(vue@3.4.21): resolution: {integrity: sha512-WS3hevEszI6CEVEx28F8RjTX97k3KsrcY6kvTg7+Whm5y3oYvcqzVeGCU3hxSAn4uY2CLCkeokkGKpoctccilQ==} engines: {node: ^18.0.0 || >=20.0.0} @@ -2159,6 +2256,13 @@ packages: '@algolia/transporter': 4.22.0 dev: true + /ansi-escapes@4.3.2: + resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} + engines: {node: '>=8'} + dependencies: + type-fest: 0.21.3 + dev: true + /ansi-escapes@6.2.0: resolution: {integrity: sha512-kzRaCqXnpzWs+3z5ABPQiVke+iq0KXkHo8xiWV4RPTi5Yli0l97BEQuhXV1s7+aSU/fu1kUuxgS4MsQ0fRuygw==} engines: {node: '>=14.16'} @@ -2442,6 +2546,11 @@ packages: yargs: 16.2.0 dev: true + /cli-spinners@2.9.2: + resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} + engines: {node: '>=6'} + dev: true + /cli-table3@0.6.3: resolution: {integrity: sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg==} engines: {node: 10.* || >= 12.*} @@ -2459,6 +2568,11 @@ packages: string-width: 7.0.0 dev: true + /cli-width@4.1.0: + resolution: {integrity: sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==} + engines: {node: '>= 12'} + dev: true + /cliui@7.0.4: resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} dependencies: @@ -2586,6 +2700,11 @@ packages: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} dev: true + /cookie@0.5.0: + resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} + engines: {node: '>= 0.6'} + dev: true + /core-util-is@1.0.3: resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} dev: true @@ -2898,6 +3017,13 @@ packages: escape-string-regexp: 1.0.5 dev: true + /figures@3.2.0: + resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} + engines: {node: '>=8'} + dependencies: + escape-string-regexp: 1.0.5 + dev: true + /figures@6.0.1: resolution: {integrity: sha512-0oY/olScYD4IhQ8u//gCPA4F3mlTn2dacYmiDm/mbDQvpmLjV4uH+zhsQ5IyXRyvqkvtUkXkNdGvg5OFJTCsuQ==} engines: {node: '>=18'} @@ -3136,6 +3262,11 @@ packages: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} dev: true + /graphql@16.8.1: + resolution: {integrity: sha512-59LZHPdGZVh695Ud9lRzPBVTtlX9ZCV150Er2W43ro37wVof0ctenSaskPPjN7lVTIN8mSZt8PHUNKZuNQUuxw==} + engines: {node: ^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0} + dev: true + /handlebars@4.7.8: resolution: {integrity: sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==} engines: {node: '>=0.4.7'} @@ -3165,6 +3296,10 @@ packages: function-bind: 1.1.2 dev: true + /headers-polyfill@4.0.3: + resolution: {integrity: sha512-IScLbePpkvO846sIwOtOTDjutRMWdXdJmXdMvk6gCBHxFO8d+QKOQedyZSxFTTFYRSmlgSTDtXqqq4pcenBXLQ==} + dev: true + /highlight.js@10.7.3: resolution: {integrity: sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==} dev: true @@ -3350,6 +3485,10 @@ packages: is-extglob: 2.1.1 dev: true + /is-node-process@1.2.0: + resolution: {integrity: sha512-Vg4o6/fqPxIjtxgUH5QLJhwZ7gW5diGCVlXpuUfELC62CuxM1iHcRe51f2W1FDy04Ai4KJkagKjx3XaqyfRKXw==} + dev: true + /is-number@7.0.0: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} @@ -3823,6 +3962,42 @@ packages: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} dev: true + /msw@2.2.13(typescript@5.4.4): + resolution: {integrity: sha512-ljFf1xZsU0b4zv1l7xzEmC6OZA6yD06hcx0H+dc8V0VypaP3HGYJa1rMLjQbBWl32ptGhcfwcPCWDB1wjmsftw==} + engines: {node: '>=18'} + hasBin: true + requiresBuild: true + peerDependencies: + typescript: '>= 4.7.x' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@bundled-es-modules/cookie': 2.0.0 + '@bundled-es-modules/statuses': 1.0.1 + '@inquirer/confirm': 3.1.2 + '@mswjs/cookies': 1.1.0 + '@mswjs/interceptors': 0.26.15 + '@open-draft/until': 2.1.0 + '@types/cookie': 0.6.0 + '@types/statuses': 2.0.5 + chalk: 4.1.2 + graphql: 16.8.1 + headers-polyfill: 4.0.3 + is-node-process: 1.2.0 + outvariant: 1.4.2 + path-to-regexp: 6.2.2 + strict-event-emitter: 0.5.1 + type-fest: 4.9.0 + typescript: 5.4.4 + yargs: 17.7.2 + dev: true + + /mute-stream@1.0.0: + resolution: {integrity: sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dev: true + /mz@2.7.0: resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} dependencies: @@ -4004,6 +4179,10 @@ packages: mimic-fn: 4.0.0 dev: true + /outvariant@1.4.2: + resolution: {integrity: sha512-Ou3dJ6bA/UJ5GVHxah4LnqDwZRwAmWxrG3wtrHrbGnP4RnLCtA64A4F+ae7Y8ww660JaddSoArUR5HjipWSHAQ==} + dev: true + /p-each-series@3.0.0: resolution: {integrity: sha512-lastgtAdoH9YaLyDa5i5z64q+kzOcQHsQ5SsZJD3q0VEyI8mq872S3geuNbRUQLVAE9siMfgKrpj7MloKFHruw==} engines: {node: '>=12'} @@ -4157,6 +4336,10 @@ packages: minipass: 7.0.4 dev: true + /path-to-regexp@6.2.2: + resolution: {integrity: sha512-GQX3SSMokngb36+whdpRXE+3f9V8UzyAorlYvOGx87ufGHehNTn5lCxrKtLyZ4Yl/wEKnNnr98ZzOwwDZV5ogw==} + dev: true + /path-type@4.0.0: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} @@ -4663,6 +4846,11 @@ packages: resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} dev: true + /statuses@2.0.1: + resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} + engines: {node: '>= 0.8'} + dev: true + /std-env@3.7.0: resolution: {integrity: sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==} dev: true @@ -4674,6 +4862,10 @@ packages: readable-stream: 2.3.8 dev: true + /strict-event-emitter@0.5.1: + resolution: {integrity: sha512-vMgjE/GGEPEFnhFub6pa4FmJBRBVOLpIII2hvCZ8Kzb7K0hlHo7mQv6xYrBvCL2LtAIBwFUK8wvuJgTVSQ5MFQ==} + dev: true + /string-argv@0.3.2: resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} engines: {node: '>=0.6.19'} @@ -4912,6 +5104,7 @@ packages: /tsconfck@3.0.3(typescript@5.4.4): resolution: {integrity: sha512-4t0noZX9t6GcPTfBAbIbbIU4pfpCwh0ueq3S4O/5qXI1VwK1outmxhe9dOiEWqMz3MW2LKgDTpqWV+37IWuVbA==} engines: {node: ^18 || >=20} + hasBin: true peerDependencies: typescript: ^5.0.0 peerDependenciesMeta: @@ -4924,6 +5117,7 @@ packages: /tsup@8.0.2(@swc/core@1.4.12)(typescript@5.4.4): resolution: {integrity: sha512-NY8xtQXdH7hDUAZwcQdY/Vzlw9johQsaqf7iwZ6g1DOUlFYQ5/AtVAjTvihhEyeRlGo4dLRVHtrRaL35M1daqQ==} engines: {node: '>=18'} + hasBin: true peerDependencies: '@microsoft/api-extractor': ^7.36.0 '@swc/core': ^1 @@ -4965,6 +5159,11 @@ packages: engines: {node: '>=4'} dev: true + /type-fest@0.21.3: + resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} + engines: {node: '>=10'} + dev: true + /type-fest@1.4.0: resolution: {integrity: sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==} engines: {node: '>=10'} @@ -5102,6 +5301,7 @@ packages: /vite@5.1.4(@types/node@20.12.5): resolution: {integrity: sha512-n+MPqzq+d9nMVTKyewqw6kSt+R3CkvF9QAKY8obiQn8g1fwTscKxyfaYnC632HtBXAQGc1Yjomphwn1dtwGAHg==} engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true peerDependencies: '@types/node': ^18.0.0 || >=20.0.0 less: '*' @@ -5137,6 +5337,7 @@ packages: /vite@5.2.4(@types/node@20.12.5): resolution: {integrity: sha512-vjFghvHWidBTinu5TCymJk/lRHlR5ljqB83yugr0HA1xspUPdOZHqbqDLnZ8f9/jINrtFHTCYYyIUi+o+Q5iyg==} engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true peerDependencies: '@types/node': ^18.0.0 || >=20.0.0 less: '*' @@ -5171,6 +5372,7 @@ packages: /vitepress@1.0.2(@algolia/client-search@4.23.2)(@types/node@20.12.5)(axios@1.6.8)(search-insights@2.13.0)(typescript@5.4.4): resolution: {integrity: sha512-bEj9yTEdWyewJFOhEREZF+mXuAgOq27etuJZT6DZSp+J3XpQstXMJc5piSVwhZBtuj8OfA0iXy+jdP1c71KMYQ==} + hasBin: true peerDependencies: markdown-it-mathjax3: ^4 postcss: ^8 @@ -5226,6 +5428,7 @@ packages: /vitest@1.4.0(@types/node@20.12.5)(@vitest/ui@1.4.0): resolution: {integrity: sha512-gujzn0g7fmwf83/WzrDTnncZt2UiXP41mHuFYFrdwaLRVQ6JYQEiME2IfEjU3vcFL3VKa75XhI3lFgn+hfVsQw==} engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true peerDependencies: '@edge-runtime/vm': '*' '@types/node': ^18.0.0 || >=20.0.0 @@ -5282,6 +5485,7 @@ packages: /vue-demi@0.14.7(vue@3.4.21): resolution: {integrity: sha512-EOG8KXDQNwkJILkx/gPcoL/7vH+hORoBaKgGe+6W7VFMvCYJfmF2dGbvgDroVnI8LU7/kTu8mbjRZGBU1z9NTA==} engines: {node: '>=12'} + hasBin: true requiresBuild: true peerDependencies: '@vue/composition-api': ^1.0.0-rc.1 @@ -5340,6 +5544,15 @@ packages: resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==} dev: true + /wrap-ansi@6.2.0: + resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} + engines: {node: '>=8'} + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + dev: true + /wrap-ansi@7.0.0: resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} engines: {node: '>=10'} diff --git a/src/__tests__/berry.spec.ts b/tests/berry/berry.spec.ts similarity index 77% rename from src/__tests__/berry.spec.ts rename to tests/berry/berry.spec.ts index fdde0483..11d00db0 100644 --- a/src/__tests__/berry.spec.ts +++ b/tests/berry/berry.spec.ts @@ -1,7 +1,7 @@ -import { assertType, beforeAll, describe, expect, expectTypeOf, it } from "vitest"; -import { BerryClient } from "../clients"; -import { BERRIES, BERRY_FIRMNESSES, BERRY_FLAVORS } from "../constants"; -import type { Berry, BerryFirmness, BerryFlavor, NamedAPIResourceList } from "../models"; +import { beforeAll, describe, expect, it } from "vitest"; +import { BerryClient } from "../../src/clients"; + +import { BERRIES, BERRY_FIRMNESSES, BERRY_FLAVORS } from "../../src/constants"; describe("Berry Client", () => { let client: BerryClient; @@ -10,55 +10,44 @@ describe("Berry Client", () => { client = new BerryClient(); }); - it("should be instantiated correctly", () => { - expect(client).toBeDefined(); - assertType(client); - }); - - // Berry Tests: + // Client + it("(client) should be instantiated correctly", () => expect(client).toBeDefined()); + // Berry Tests it("should fetch a berry by name and return the correct data", async () => { - const data = await client.getBerryByName("cheri"); - - expectTypeOf(data).toEqualTypeOf(); - expect(data.id).toBe(BERRIES.CHERI); + const berry = await client.getBerryByName("cheri"); + expect(berry.name).toBe("cheri"); }); it("should fetch a berry by ID and return the correct data", async () => { const data = await client.getBerryById(BERRIES.CHERI); - expectTypeOf(data).toEqualTypeOf(); expect(data.name).toBe("cheri"); }); it("should fetch a list of berries and return valid results", async () => { const data = await client.listBerries(); - expectTypeOf(data).toEqualTypeOf(); expect(data.results.length).toBeGreaterThan(0); expect(data.results.length).toBeLessThanOrEqual(20); }); - // Berry Firmness Tests: - + // Berry Firmness Tests it("should fetch a berry firmness by name and return the correct data", async () => { const data = await client.getBerryFirmnessByName("very-soft"); - expectTypeOf(data).toEqualTypeOf(); expect(data.name).toBe("very-soft"); }); it("should fetch a berry firmness by ID and return the correct data", async () => { const data = await client.getBerryFirmnessById(BERRY_FIRMNESSES.VERY_SOFT); - expectTypeOf(data).toEqualTypeOf(); expect(data.name).toBe("very-soft"); }); it("should fetch a list of berry firmnesses and return valid results", async () => { const data = await client.listBerryFirmnesses(); - expectTypeOf(data).toEqualTypeOf(); expect(data.results.length).toBeGreaterThan(0); expect(data.results.length).toBeLessThanOrEqual(20); }); @@ -68,21 +57,18 @@ describe("Berry Client", () => { it("should fetch a berry flavor by name and return the correct data", async () => { const data = await client.getBerryFlavorByName("spicy"); - expectTypeOf(data).toEqualTypeOf(); expect(data.id).toBe(BERRY_FLAVORS.SPICY); }); it("should fetch a berry flavor by ID and return the correct data", async () => { const data = await client.getBerryFlavorById(BERRY_FLAVORS.SPICY); - expectTypeOf(data).toEqualTypeOf(); expect(data.name).toBe("spicy"); }); it("should fetch a list of berry flavors and return valid results", async () => { const data = await client.listBerryFlavors(); - expectTypeOf(data).toEqualTypeOf(); expect(data.results.length).toBeGreaterThan(0); expect(data.results.length).toBeLessThanOrEqual(20); }); diff --git a/tests/berry/berry.test-d.ts b/tests/berry/berry.test-d.ts new file mode 100644 index 00000000..0a2053a1 --- /dev/null +++ b/tests/berry/berry.test-d.ts @@ -0,0 +1 @@ +// WIP diff --git a/tests/berry/mocks.ts b/tests/berry/mocks.ts new file mode 100644 index 00000000..c8c31f84 --- /dev/null +++ b/tests/berry/mocks.ts @@ -0,0 +1,69 @@ +import { http, HttpResponse } from "msw"; +import type { Berry } from "../../src/models"; + +const MOCKED_RESPONSE = { + firmness: { + name: "soft", + url: "https://pokeapi.co/api/v2/berry-firmness/2/", + }, + flavors: [ + { + flavor: { + name: "spicy", + url: "https://pokeapi.co/api/v2/berry-flavor/1/", + }, + potency: 10, + }, + { + flavor: { + name: "dry", + url: "https://pokeapi.co/api/v2/berry-flavor/2/", + }, + potency: 0, + }, + { + flavor: { + name: "sweet", + url: "https://pokeapi.co/api/v2/berry-flavor/3/", + }, + potency: 0, + }, + { + flavor: { + name: "bitter", + url: "https://pokeapi.co/api/v2/berry-flavor/4/", + }, + potency: 0, + }, + { + flavor: { + name: "sour", + url: "https://pokeapi.co/api/v2/berry-flavor/5/", + }, + potency: 0, + }, + ], + growth_time: 3, + id: 1, + item: { + name: "cheri-berry", + url: "https://pokeapi.co/api/v2/item/126/", + }, + max_harvest: 5, + name: "cheri", + natural_gift_power: 60, + natural_gift_type: { + name: "fire", + url: "https://pokeapi.co/api/v2/type/10/", + }, + size: 20, + smoothness: 25, + soil_dryness: 15, +} as Berry; + +const getBerryByName = http.get( + "https://pokeapi.co/api/v2/berry/cheri", + async () => HttpResponse.json(MOCKED_RESPONSE), +); + +export const berryHandlers = [getBerryByName]; diff --git a/src/__tests__/contest.spec.ts b/tests/contest/contest.spec.ts similarity index 66% rename from src/__tests__/contest.spec.ts rename to tests/contest/contest.spec.ts index bdc0c38b..8d4cb4a1 100644 --- a/src/__tests__/contest.spec.ts +++ b/tests/contest/contest.spec.ts @@ -1,43 +1,31 @@ -import { beforeAll, describe, expect, expectTypeOf, it } from "vitest"; -import { ContestClient } from "../clients"; -import { CONTEST_TYPES } from "../constants"; -import type { - ContestEffect, - ContestType, - NamedAPIResourceList, - SuperContestEffect, -} from "../models"; +import { beforeAll, describe, expect, it } from "vitest"; +import { ContestClient } from "../../src/clients"; +import { CONTEST_TYPES } from "../../src/constants"; describe("Contest Client", () => { let client: ContestClient; + beforeAll(() => { client = new ContestClient(); }); - // Contest Client - it("check if the contest client was instantiated correctly", () => { - expectTypeOf(client).toEqualTypeOf(); - }); + // Client + it("(client) should be instantiated correctly", () => expect(client).toBeDefined()); // Contest Type it("check if it returns a contest type passig a name", async () => { const data = await client.getContestTypeByName("cool"); - - expectTypeOf(data).toEqualTypeOf(); expect(data.id).toBe(CONTEST_TYPES.COOL); }); it("check if it returns a contest type passing an ID", async () => { const data = await client.getContestTypeById(CONTEST_TYPES.COOL); - - expectTypeOf(data).toEqualTypeOf(); expect(data.name).toBe("cool"); }); it("check if it returns a list of contest types", async () => { const data = await client.listContestTypes(); - expectTypeOf(data).toMatchTypeOf(); expect(data.results.length).toBeGreaterThan(0); expect(data.results.length).toBeLessThanOrEqual(20); }); @@ -45,15 +33,11 @@ describe("Contest Client", () => { // Contest Effect it("check if it returns a contest effect passing an ID", async () => { const data = await client.getContestEffectById(1); - - expectTypeOf(data).toEqualTypeOf(); expect(data.effect_entries.length).toBeGreaterThan(0); }); it("check if it returns a list of contest effects", async () => { const data = await client.listContestEffects(); - - expectTypeOf(data).toEqualTypeOf(); expect(data.results.length).toBeGreaterThan(0); expect(data.results.length).toBeLessThanOrEqual(20); }); @@ -61,15 +45,11 @@ describe("Contest Client", () => { // Super Contest Effect it("check if it returns a super contest effect passing an ID", async () => { const data = await client.getSuperContestEffectById(1); - - expectTypeOf(data).toEqualTypeOf(); expect(data.flavor_text_entries.length).toBeGreaterThan(0); }); it("check if it returns a list of super contest effects", async () => { const data = await client.listSuperContestEffects(); - - expectTypeOf(data).toEqualTypeOf(); expect(data.results.length).toBeGreaterThan(0); expect(data.results.length).toBeLessThanOrEqual(20); }); diff --git a/tests/contest/contest.test-d.ts b/tests/contest/contest.test-d.ts new file mode 100644 index 00000000..0a2053a1 --- /dev/null +++ b/tests/contest/contest.test-d.ts @@ -0,0 +1 @@ +// WIP diff --git a/tests/contest/mocks.ts b/tests/contest/mocks.ts new file mode 100644 index 00000000..0a2053a1 --- /dev/null +++ b/tests/contest/mocks.ts @@ -0,0 +1 @@ +// WIP diff --git a/src/__tests__/encounter.spec.ts b/tests/encounter/encounter.spec.ts similarity index 68% rename from src/__tests__/encounter.spec.ts rename to tests/encounter/encounter.spec.ts index 44b4ee0a..df4af3bf 100644 --- a/src/__tests__/encounter.spec.ts +++ b/tests/encounter/encounter.spec.ts @@ -1,43 +1,38 @@ -import { beforeAll, describe, expect, expectTypeOf, it } from "vitest"; -import { EncounterClient } from "../clients"; -import { ENCOUNTER_CONDITIONS, ENCOUNTER_CONDITION_VALUES, ENCOUNTER_METHODS } from "../constants"; -import type { - EncounterCondition, - EncounterConditionValue, - EncounterMethod, - NamedAPIResourceList, -} from "../models"; +import { beforeAll, describe, expect, it } from "vitest"; + +import { EncounterClient } from "../../src/clients"; +import { + ENCOUNTER_CONDITIONS, + ENCOUNTER_CONDITION_VALUES, + ENCOUNTER_METHODS, +} from "../../src/constants"; describe("Encounter Client", () => { let client: EncounterClient; + beforeAll(() => { client = new EncounterClient(); }); - // Encouter Client - it("check if the encouter client was instantiated correctly", () => { - expectTypeOf(client).toEqualTypeOf(); - }); + // Client + it("(client) should be instantiated correctly", () => expect(client).toBeDefined()); // Encounter Method it("check if it returns an encounter method passig a name", async () => { const data = await client.getEncounterMethodByName("walk"); - expectTypeOf(data).toEqualTypeOf(); expect(data.id).toBe(ENCOUNTER_METHODS.WALK); }); it("check if it returns an encounter method passig an id", async () => { const data = await client.getEncounterMethodById(ENCOUNTER_METHODS.WALK); - expectTypeOf(data).toEqualTypeOf(); expect(data.name).toBe("walk"); }); it("check if it returns a list of encounter methods", async () => { const data = await client.listEncounterMethods(); - expectTypeOf(data).toEqualTypeOf(); expect(data.results.length).toBeGreaterThan(0); expect(data.results.length).toBeLessThanOrEqual(20); }); @@ -46,21 +41,18 @@ describe("Encounter Client", () => { it("check if it returns an encounter condition passig a name", async () => { const data = await client.getEncounterConditionByName("swarm"); - expectTypeOf(data).toEqualTypeOf(); expect(data.id).toBe(ENCOUNTER_CONDITIONS.SWARM); }); it("check if it returns an encounter condition passig an id", async () => { const data = await client.getEncounterConditionById(ENCOUNTER_CONDITIONS.SWARM); - expectTypeOf(data).toEqualTypeOf(); expect(data.name).toBe("swarm"); }); it("check if it returns a list of encounter conditions", async () => { const data = await client.listEncounterConditions(); - expectTypeOf(data).toEqualTypeOf(); expect(data.results.length).toBeGreaterThan(0); expect(data.results.length).toBeLessThanOrEqual(20); }); @@ -69,21 +61,18 @@ describe("Encounter Client", () => { it("check if it returns an encounter condition values passig a name", async () => { const data = await client.getEncounterConditionValueByName("swarm-yes"); - expectTypeOf(data).toEqualTypeOf(); expect(data.id).toBe(ENCOUNTER_CONDITION_VALUES.SWARM_YES); }); it("check if it returns an encounter condition values passig an id", async () => { const data = await client.getEncounterConditionValueById(ENCOUNTER_CONDITION_VALUES.SWARM_YES); - expectTypeOf(data).toEqualTypeOf(); expect(data.name).toBe("swarm-yes"); }); it("check if it returns a list of encounter condition values", async () => { const data = await client.listEncounterConditionValues(); - expectTypeOf(data).toEqualTypeOf(); expect(data.results.length).toBeGreaterThan(0); expect(data.results.length).toBeLessThanOrEqual(20); }); diff --git a/tests/encounter/encouter.test-d.ts b/tests/encounter/encouter.test-d.ts new file mode 100644 index 00000000..0a2053a1 --- /dev/null +++ b/tests/encounter/encouter.test-d.ts @@ -0,0 +1 @@ +// WIP diff --git a/tests/encounter/mocks.ts b/tests/encounter/mocks.ts new file mode 100644 index 00000000..0a2053a1 --- /dev/null +++ b/tests/encounter/mocks.ts @@ -0,0 +1 @@ +// WIP diff --git a/src/__tests__/evolution.spec.ts b/tests/evolution/evolution.spec.ts similarity index 63% rename from src/__tests__/evolution.spec.ts rename to tests/evolution/evolution.spec.ts index 42190286..aab41bda 100644 --- a/src/__tests__/evolution.spec.ts +++ b/tests/evolution/evolution.spec.ts @@ -1,38 +1,34 @@ -import { beforeAll, describe, expect, expectTypeOf, it } from "vitest"; -import { EvolutionClient } from "../clients"; -import { EVOLUTION_TRIGGERS } from "../constants"; -import type { EvolutionChain, EvolutionTrigger, NamedAPIResourceList } from "../models"; +import { beforeAll, describe, expect, it } from "vitest"; + +import { EvolutionClient } from "../../src/clients"; +import { EVOLUTION_TRIGGERS } from "../../src/constants"; describe("Evolution Client", () => { let client: EvolutionClient; + beforeAll(() => { client = new EvolutionClient(); }); - // Evolution Client - it("check if the evolution client was instantiated correctly", () => { - expectTypeOf(client).toEqualTypeOf(); - }); + // Client + it("(client) should be instantiated correctly", () => expect(client).toBeDefined()); // Evolution Trigger it("check if it returns an evolution trigger passig an ID", async () => { const data = await client.getEvolutionTriggerById(EVOLUTION_TRIGGERS.LEVEL_UP); - expectTypeOf(data).toEqualTypeOf(); expect(data.name).toBe("level-up"); }); it("check if it returns an evolution trigger passing a name", async () => { const data = await client.getEvolutionTriggerByName("level-up"); - expectTypeOf(data).toEqualTypeOf(); expect(data.id).toBe(EVOLUTION_TRIGGERS.LEVEL_UP); }); it("check if it returns a list of evolution triggers", async () => { const data = await client.listEvolutionTriggers(); - expectTypeOf(data).toEqualTypeOf(); expect(data.results.length).toBeGreaterThan(0); expect(data.results.length).toBeLessThanOrEqual(20); }); @@ -41,14 +37,12 @@ describe("Evolution Client", () => { it("check if it returns an evolution chain passig an ID", async () => { const data = await client.getEvolutionChainById(1); - expectTypeOf(data).toEqualTypeOf(); expect(data.id).toBe(1); }); it("check if it returns a list of evolution chains", async () => { const data = await client.listEvolutionChains(); - expectTypeOf(data).toEqualTypeOf(); expect(data.results.length).toBeGreaterThan(0); expect(data.results.length).toBeLessThanOrEqual(20); }); diff --git a/tests/evolution/evolution.test-d.ts b/tests/evolution/evolution.test-d.ts new file mode 100644 index 00000000..0a2053a1 --- /dev/null +++ b/tests/evolution/evolution.test-d.ts @@ -0,0 +1 @@ +// WIP diff --git a/tests/evolution/mocks.ts b/tests/evolution/mocks.ts new file mode 100644 index 00000000..0a2053a1 --- /dev/null +++ b/tests/evolution/mocks.ts @@ -0,0 +1 @@ +// WIP diff --git a/src/__tests__/game.spec.ts b/tests/game/game.spec.ts similarity index 73% rename from src/__tests__/game.spec.ts rename to tests/game/game.spec.ts index ec47600d..aa52995f 100644 --- a/src/__tests__/game.spec.ts +++ b/tests/game/game.spec.ts @@ -1,38 +1,33 @@ import { beforeAll, describe, expect, expectTypeOf, it } from "vitest"; -import { GameClient } from "../clients"; -import { GENERATIONS, POKEDEXES, VERSIONS, VERSION_GROUPS } from "../constants"; -import type { Generation, NamedAPIResourceList, Pokedex, Version, VersionGroup } from "../models"; +import { GameClient } from "../../src/clients"; +import { GENERATIONS, POKEDEXES, VERSIONS, VERSION_GROUPS } from "../../src/constants"; describe("Game Client", () => { let client: GameClient; + beforeAll(() => { client = new GameClient(); }); - // Game Client - it("check if the game client was instantiated correctly", () => { - expectTypeOf(client).toEqualTypeOf(); - }); + // Client + it("(client) should be instantiated correctly", () => expect(client).toBeDefined()); // Generation it("check if it returns a generation passig a name", async () => { const data = await client.getGenerationByName("generation-i"); - expectTypeOf(data).toEqualTypeOf(); expect(data.id).toBe(GENERATIONS.GENERATION_I); }); it("check if it returns a generation passing an ID", async () => { const data = await client.getGenerationById(GENERATIONS.GENERATION_I); - expectTypeOf(data).toEqualTypeOf(); expect(data.name).toBe("generation-i"); }); it("check if it returns a list of generations", async () => { const data = await client.listGenerations(); - expectTypeOf(data).toEqualTypeOf(); expect(data.results.length).toBeGreaterThan(0); expect(data.results.length).toBeLessThanOrEqual(20); }); @@ -41,21 +36,18 @@ describe("Game Client", () => { it("check if it returns a pokedex passig a name", async () => { const data = await client.getPokedexByName("national"); - expectTypeOf(data).toEqualTypeOf(); expect(data.id).toBe(POKEDEXES.NATIONAL); }); it("check if it returns a pokedex passing an ID", async () => { const data = await client.getPokedexById(POKEDEXES.NATIONAL); - expectTypeOf(data).toEqualTypeOf(); expect(data.name).toBe("national"); }); it("check if it returns a list of pokedexes", async () => { const data = await client.listPokedexes(); - expectTypeOf(data).toEqualTypeOf(); expect(data.results.length).toBeGreaterThan(0); expect(data.results.length).toBeLessThanOrEqual(20); }); @@ -64,21 +56,18 @@ describe("Game Client", () => { it("check if it returns a version passig a name", async () => { const data = await client.getVersionByName("red"); - expectTypeOf(data).toEqualTypeOf(); expect(data.id).toBe(VERSIONS.RED); }); it("check if it returns a version passing an ID", async () => { const data = await client.getVersionById(VERSIONS.RED); - expectTypeOf(data).toEqualTypeOf(); expect(data.name).toBe("red"); }); it("check if it returns a list of versions", async () => { const data = await client.listVersions(); - expectTypeOf(data).toEqualTypeOf(); expect(data.results.length).toBeGreaterThan(0); expect(data.results.length).toBeLessThanOrEqual(20); }); @@ -87,21 +76,18 @@ describe("Game Client", () => { it("check if it returns a version group passig a name", async () => { const data = await client.getVersionGroupByName("red-blue"); - expectTypeOf(data).toEqualTypeOf(); expect(data.id).toBe(VERSION_GROUPS.RED_BLUE); }); it("check if it returns a version group passing an ID", async () => { const data = await client.getVersionGroupById(VERSION_GROUPS.RED_BLUE); - expectTypeOf(data).toEqualTypeOf(); expect(data.name).toBe("red-blue"); }); it("check if it returns a list of version groups", async () => { const data = await client.listVersionGroups(); - expectTypeOf(data).toEqualTypeOf(); expect(data.results.length).toBeGreaterThan(0); expect(data.results.length).toBeLessThanOrEqual(20); }); diff --git a/tests/game/game.test-d.ts b/tests/game/game.test-d.ts new file mode 100644 index 00000000..0a2053a1 --- /dev/null +++ b/tests/game/game.test-d.ts @@ -0,0 +1 @@ +// WIP diff --git a/tests/game/mocks.ts b/tests/game/mocks.ts new file mode 100644 index 00000000..0a2053a1 --- /dev/null +++ b/tests/game/mocks.ts @@ -0,0 +1 @@ +// WIP diff --git a/src/__tests__/item.spec.ts b/tests/item/item.spec.ts similarity index 71% rename from src/__tests__/item.spec.ts rename to tests/item/item.spec.ts index 38265b27..c5c04ac9 100644 --- a/src/__tests__/item.spec.ts +++ b/tests/item/item.spec.ts @@ -1,45 +1,33 @@ -import { beforeAll, describe, expect, expectTypeOf, it } from "vitest"; -import { ItemClient } from "../clients"; -import { ITEM_CATEGORIES, ITEM_FLING_EFFECTS, ITEM_POCKETS } from "../constants"; -import type { - Item, - ItemAttribute, - ItemCategory, - ItemFlingEffect, - ItemPocket, - NamedAPIResourceList, -} from "../models"; +import { beforeAll, describe, expect, it } from "vitest"; +import { ItemClient } from "../../src/clients"; +import { ITEM_CATEGORIES, ITEM_FLING_EFFECTS, ITEM_POCKETS } from "../../src/constants"; describe("Item Client", () => { let client: ItemClient; + beforeAll(() => { client = new ItemClient(); }); - // Item Client - it("check if the item client was instantiated correctly", () => { - expectTypeOf(client).toEqualTypeOf(); - }); + // Client + it("(client) should be instantiated correctly", () => expect(client).toBeDefined()); // Item it("check if it returns an item passig a name", async () => { const data = await client.getItemByName("master-ball"); - expectTypeOf(data).toEqualTypeOf(); expect(data.name).toBe("master-ball"); }); it("check if it returns an item passing an ID", async () => { const data = await client.getItemById(1); - expectTypeOf(data).toEqualTypeOf(); expect(data.name).toBe("master-ball"); }); it("check if it returns a list of Items", async () => { const data = await client.listItems(); - expectTypeOf(data).toEqualTypeOf(); expect(data.results.length).toBeGreaterThan(0); expect(data.results.length).toBeLessThanOrEqual(20); }); @@ -48,30 +36,25 @@ describe("Item Client", () => { it("check if it returns an item attribute passig a name", async () => { const data = await client.getItemAttributeByName("countable"); - expectTypeOf(data).toEqualTypeOf(); expect(data.name).toBe("countable"); }); it("check if it returns an item attribute passing an ID", async () => { const data = await client.getItemAttributeById(1); - expectTypeOf(data).toEqualTypeOf(); expect(data.name).toBe("countable"); }); it("check if it returns a list of item attributes", async () => { const data = await client.listItemAttributes(); - expectTypeOf(data).toEqualTypeOf(); expect(data.results.length).toBeGreaterThan(0); expect(data.results.length).toBeLessThanOrEqual(20); }); // Item Category it("check if it returns an item category passig a name", async () => { - const data = await client - .getItemCategoryByName("choice") - .then((response: ItemCategory) => response); + const data = await client.getItemCategoryByName("choice"); expect(data.id).toBe(13); }); @@ -79,14 +62,12 @@ describe("Item Client", () => { it("check if it returns an item category passing an ID", async () => { const data = await client.getItemCategoryById(ITEM_CATEGORIES.CHOICE); - expectTypeOf(data).toEqualTypeOf(); expect(data.name).toBe("choice"); }); it("check if it returns a list of item categories", async () => { const data = await client.listItemCategories(); - expectTypeOf(data).toEqualTypeOf(); expect(data.results.length).toBeGreaterThan(0); expect(data.results.length).toBeLessThanOrEqual(20); }); @@ -95,21 +76,18 @@ describe("Item Client", () => { it("check if it returns an item fling effect passig a name", async () => { const data = await client.getItemFlingEffectByName("flinch"); - expectTypeOf(data).toEqualTypeOf(); expect(data.id).toBe(ITEM_FLING_EFFECTS.FLINCH); }); it("check if it returns an item fling effect passing an ID", async () => { const data = await client.getItemFlingEffectById(ITEM_FLING_EFFECTS.FLINCH); - expectTypeOf(data).toEqualTypeOf(); expect(data.name).toBe("flinch"); }); it("check if it returns a list of item fling effects", async () => { const data = await client.listItemFilingEffects(); - expectTypeOf(data).toEqualTypeOf(); expect(data.results.length).toBeGreaterThan(0); expect(data.results.length).toBeLessThanOrEqual(20); }); @@ -118,21 +96,18 @@ describe("Item Client", () => { it("check if it returns an item pocket passig a name", async () => { const data = await client.getItemPocketByName("battle"); - expectTypeOf(data).toEqualTypeOf(); expect(data.id).toBe(ITEM_POCKETS.BATTLE); }); it("check if it returns an item pocket passing an ID", async () => { const data = await client.getItemPocketById(ITEM_POCKETS.BATTLE); - expectTypeOf(data).toEqualTypeOf(); expect(data.name).toBe("battle"); }); it("check if it returns a list of item pockets", async () => { const data = await client.listItemPockets(); - expectTypeOf(data).toEqualTypeOf(); expect(data.results.length).toBeGreaterThan(0); expect(data.results.length).toBeLessThanOrEqual(20); }); diff --git a/tests/item/item.test-d.ts b/tests/item/item.test-d.ts new file mode 100644 index 00000000..0a2053a1 --- /dev/null +++ b/tests/item/item.test-d.ts @@ -0,0 +1 @@ +// WIP diff --git a/tests/item/mocks.ts b/tests/item/mocks.ts new file mode 100644 index 00000000..0a2053a1 --- /dev/null +++ b/tests/item/mocks.ts @@ -0,0 +1 @@ +// WIP diff --git a/src/__tests__/location.spec.ts b/tests/location/location.spec.ts similarity index 70% rename from src/__tests__/location.spec.ts rename to tests/location/location.spec.ts index c094f9a8..d789d455 100644 --- a/src/__tests__/location.spec.ts +++ b/tests/location/location.spec.ts @@ -1,38 +1,34 @@ -import { beforeAll, describe, expect, expectTypeOf, it } from "vitest"; -import { LocationClient } from "../clients"; -import { PAL_PARK_AREAS, REGIONS } from "../constants"; -import type { Location, LocationArea, NamedAPIResourceList, PalParkArea, Region } from "../models"; +import { beforeAll, describe, expect, it } from "vitest"; + +import { LocationClient } from "../../src/clients"; +import { PAL_PARK_AREAS, REGIONS } from "../../src/constants"; describe("Location Client", () => { let client: LocationClient; + beforeAll(() => { client = new LocationClient(); }); - // Location Client - it("check if the location client was instantiated correctly", () => { - expectTypeOf(client).toEqualTypeOf(); - }); + // Client + it("(client) should be instantiated correctly", () => expect(client).toBeDefined()); // Location it("check if it returns a location passig a name", async () => { const data = await client.getLocationByName("canalave-city"); - expectTypeOf(data).toEqualTypeOf(); expect(data.id).toBe(1); }); it("check if it returns a location passing an ID", async () => { const data = await client.getLocationById(1); - expectTypeOf(data).toEqualTypeOf(); expect(data.name).toBe("canalave-city"); }); it("check if it returns a list of locations", async () => { const data = await client.listLocations(); - expectTypeOf(data).toEqualTypeOf(); expect(data.results.length).toBeGreaterThan(0); expect(data.results.length).toBeLessThanOrEqual(20); }); @@ -41,21 +37,18 @@ describe("Location Client", () => { it("check if it returns a location area passig a name", async () => { const data = await client.getLocationAreaByName("canalave-city-area"); - expectTypeOf(data).toEqualTypeOf(); expect(data.id).toBe(1); }); it("check if it returns a location area passing an ID", async () => { const data = await client.getLocationAreaById(1); - expectTypeOf(data).toEqualTypeOf(); expect(data.name).toBe("canalave-city-area"); }); it("check if it returns a list of location areas", async () => { const data = await client.listLocationAreas(); - expectTypeOf(data).toEqualTypeOf(); expect(data.results.length).toBeGreaterThan(0); expect(data.results.length).toBeLessThanOrEqual(20); }); @@ -64,21 +57,18 @@ describe("Location Client", () => { it("check if it returns a pal park area passig a name", async () => { const data = await client.getPalParkAreaByName("forest"); - expectTypeOf(data).toEqualTypeOf(); expect(data.id).toBe(PAL_PARK_AREAS.FOREST); }); it("check if it returns a pal park area passing an ID", async () => { const data = await client.getPalParkAreaById(PAL_PARK_AREAS.FOREST); - expectTypeOf(data).toEqualTypeOf(); expect(data.name).toBe("forest"); }); it("check if it returns a list of pal park areas", async () => { const data = await client.listPalParkAreas(); - expectTypeOf(data).toEqualTypeOf(); expect(data.results.length).toBeGreaterThan(0); expect(data.results.length).toBeLessThanOrEqual(20); }); @@ -87,21 +77,18 @@ describe("Location Client", () => { it("check if it returns a region passig a name", async () => { const data = await client.getRegionByName("kanto"); - expectTypeOf(data).toEqualTypeOf(); expect(data.id).toBe(REGIONS.KANTO); }); it("check if it returns a region passing an ID", async () => { const data = await client.getRegionById(REGIONS.KANTO); - expectTypeOf(data).toEqualTypeOf(); expect(data.name).toBe("kanto"); }); it("check if it returns a list of regions", async () => { const data = await client.listRegions(); - expectTypeOf(data).toEqualTypeOf(); expect(data.results.length).toBeGreaterThan(0); expect(data.results.length).toBeLessThanOrEqual(20); }); diff --git a/tests/location/location.test-d.ts b/tests/location/location.test-d.ts new file mode 100644 index 00000000..0a2053a1 --- /dev/null +++ b/tests/location/location.test-d.ts @@ -0,0 +1 @@ +// WIP diff --git a/tests/location/mocks.ts b/tests/location/mocks.ts new file mode 100644 index 00000000..0a2053a1 --- /dev/null +++ b/tests/location/mocks.ts @@ -0,0 +1 @@ +// WIP diff --git a/src/__tests__/logger.spec.ts b/tests/logger/logger.spec.ts similarity index 98% rename from src/__tests__/logger.spec.ts rename to tests/logger/logger.spec.ts index cb486313..7e61e941 100644 --- a/src/__tests__/logger.spec.ts +++ b/tests/logger/logger.spec.ts @@ -4,7 +4,7 @@ import { handleRequestError, handleResponse, handleResponseError, -} from "../config/logger"; +} from "../../src/config/logger"; const consoleLogSpy = vi.spyOn(console, "log"); const consoleErrorSpy = vi.spyOn(console, "error"); diff --git a/src/__tests__/machine.spec.ts b/tests/machine/machine.spec.ts similarity index 61% rename from src/__tests__/machine.spec.ts rename to tests/machine/machine.spec.ts index 228bee99..6124ef2e 100644 --- a/src/__tests__/machine.spec.ts +++ b/tests/machine/machine.spec.ts @@ -1,30 +1,27 @@ import { beforeAll, describe, expect, expectTypeOf, it } from "vitest"; -import { MachineClient } from "../clients"; -import type { Machine, NamedAPIResourceList } from "../models"; +import { MachineClient } from "../../src/clients"; +import type { Machine, NamedAPIResourceList } from "../../src/models"; describe("Machine Client", () => { let client: MachineClient; + beforeAll(() => { client = new MachineClient(); }); - // Machine Client - it("check if the machine client was instantiated correctly", () => { - expectTypeOf(client).toEqualTypeOf(); - }); + // Client + it("(client) should be instantiated correctly", () => expect(client).toBeDefined()); // Machine it("check if it returns a machine passing an ID", async () => { const data = await client.getMachineById(1); - expectTypeOf(data).toEqualTypeOf(); expect(data.id).toBe(1); }); it("check if it returns a list of machines", async () => { const data = await client.listMachines(); - expectTypeOf(data).toEqualTypeOf(); expect(data.results.length).toBeGreaterThan(0); expect(data.results.length).toBeLessThanOrEqual(20); }); diff --git a/tests/machine/machine.test-d.ts b/tests/machine/machine.test-d.ts new file mode 100644 index 00000000..0a2053a1 --- /dev/null +++ b/tests/machine/machine.test-d.ts @@ -0,0 +1 @@ +// WIP diff --git a/tests/machine/mocks.ts b/tests/machine/mocks.ts new file mode 100644 index 00000000..0a2053a1 --- /dev/null +++ b/tests/machine/mocks.ts @@ -0,0 +1 @@ +// WIP diff --git a/src/__tests__/main.spec.ts b/tests/main/main.spec.ts similarity index 56% rename from src/__tests__/main.spec.ts rename to tests/main/main.spec.ts index ccfffeeb..0b082c54 100644 --- a/src/__tests__/main.spec.ts +++ b/tests/main/main.spec.ts @@ -1,51 +1,40 @@ -import { beforeAll, describe, expect, expectTypeOf, it } from "vitest"; -import * as Clients from "../clients"; +import { beforeAll, describe, expect, it } from "vitest"; + +import { MainClient } from "../../src/clients"; import { BERRIES, CONTEST_TYPES, ENCOUNTER_METHODS, EVOLUTION_TRIGGERS, GENERATIONS, -} from "../constants"; -import type { - Berry, - ContestType, - EncounterMethod, - EvolutionTrigger, - Generation, - Item, - Location, - Machine, - Move, - Pokemon, -} from "../models"; +} from "../../src/constants"; describe("MainClient Client", () => { - let client: Clients.MainClient; + let client: MainClient; + beforeAll(() => { - client = new Clients.MainClient(); + client = new MainClient(); }); // Main Client - it("check if the main client was instantiated correctly", () => { - expectTypeOf(client).toMatchTypeOf(); - expectTypeOf(client.berry).toMatchTypeOf(); - expectTypeOf(client.contest).toMatchTypeOf(); - expectTypeOf(client.encounter).toMatchTypeOf(); - expectTypeOf(client.evolution).toMatchTypeOf(); - expectTypeOf(client.game).toMatchTypeOf(); - expectTypeOf(client.item).toMatchTypeOf(); - expectTypeOf(client.location).toMatchTypeOf(); - expectTypeOf(client.machine).toMatchTypeOf(); - expectTypeOf(client.move).toMatchTypeOf(); - expectTypeOf(client.pokemon).toMatchTypeOf(); + it("(clients) should be instantiated correctly", () => { + expect(client).toBeDefined(); + expect(client.berry).toBeDefined; + expect(client.contest).toBeDefined(); + expect(client.encounter).toBeDefined(); + expect(client.evolution).toBeDefined(); + expect(client.game).toBeDefined(); + expect(client.item).toBeDefined(); + expect(client.location).toBeDefined(); + expect(client.machine).toBeDefined(); + expect(client.move).toBeDefined(); + expect(client.pokemon).toBeDefined(); }); // Berry Client it("check if it returns a berry passig a name", async () => { const data = await client.berry.getBerryByName("cheri"); - expectTypeOf(data).toMatchTypeOf(); expect(data.id).toBe(BERRIES.CHERI); }); @@ -53,7 +42,6 @@ describe("MainClient Client", () => { it("check if it returns a contest type passig a name", async () => { const data = await client.contest.getContestTypeByName("cool"); - expectTypeOf(data).toMatchTypeOf(); expect(data.id).toBe(CONTEST_TYPES.COOL); }); @@ -61,7 +49,6 @@ describe("MainClient Client", () => { it("check if it returns an encounter method passig a name", async () => { const data = await client.encounter.getEncounterMethodByName("surf"); - expectTypeOf(data).toMatchTypeOf(); expect(data.id).toBe(ENCOUNTER_METHODS.SURF); }); @@ -69,7 +56,6 @@ describe("MainClient Client", () => { it("check if it returns an evolution trigger method passig a name", async () => { const data = await client.evolution.getEvolutionTriggerByName("shed"); - expectTypeOf(data).toMatchTypeOf(); expect(data.id).toBe(EVOLUTION_TRIGGERS.SHED); }); @@ -77,7 +63,6 @@ describe("MainClient Client", () => { it("check if it returns a generation method passig a name", async () => { const data = await client.game.getGenerationByName("generation-i"); - expectTypeOf(data).toMatchTypeOf(); expect(data.id).toBe(GENERATIONS.GENERATION_I); }); @@ -85,7 +70,6 @@ describe("MainClient Client", () => { it("check if it returns an item passig a name", async () => { const data = await client.item.getItemByName("master-ball"); - expectTypeOf(data).toMatchTypeOf(); expect(data.id).toBe(1); }); @@ -93,7 +77,6 @@ describe("MainClient Client", () => { it("check if it returns a location passig a name", async () => { const data = await client.location.getLocationByName("canalave-city"); - expectTypeOf(data).toMatchTypeOf(); expect(data.id).toBe(1); }); @@ -101,7 +84,6 @@ describe("MainClient Client", () => { it("check if it returns a machine passig an ID", async () => { const data = await client.machine.getMachineById(1); - expectTypeOf(data).toMatchTypeOf(); expect(data.id).toBe(1); }); @@ -109,7 +91,6 @@ describe("MainClient Client", () => { it("check if it returns a move passig a name", async () => { const data = await client.move.getMoveById(1); - expectTypeOf(data).toMatchTypeOf(); expect(data.id).toBe(1); }); @@ -117,7 +98,6 @@ describe("MainClient Client", () => { it("check if it returns a pokemon passig a name", async () => { const data = await client.pokemon.getPokemonByName("luxray"); - expectTypeOf(data).toMatchTypeOf(); expect(data.id).toBe(405); }); }); diff --git a/tests/main/main.test-d.ts b/tests/main/main.test-d.ts new file mode 100644 index 00000000..0a2053a1 --- /dev/null +++ b/tests/main/main.test-d.ts @@ -0,0 +1 @@ +// WIP diff --git a/tests/main/mocks.ts b/tests/main/mocks.ts new file mode 100644 index 00000000..0a2053a1 --- /dev/null +++ b/tests/main/mocks.ts @@ -0,0 +1 @@ +// WIP diff --git a/tests/move/mocks.ts b/tests/move/mocks.ts new file mode 100644 index 00000000..0a2053a1 --- /dev/null +++ b/tests/move/mocks.ts @@ -0,0 +1 @@ +// WIP diff --git a/src/__tests__/move.spec.ts b/tests/move/move.spec.ts similarity index 74% rename from src/__tests__/move.spec.ts rename to tests/move/move.spec.ts index 3e4994d9..fd0bbeb2 100644 --- a/src/__tests__/move.spec.ts +++ b/tests/move/move.spec.ts @@ -1,5 +1,6 @@ -import { beforeAll, describe, expect, expectTypeOf, it } from "vitest"; -import { MoveClient } from "../clients"; +import { beforeAll, describe, expect, it } from "vitest"; + +import { MoveClient } from "../../src/clients"; import { MOVE_AILMENTS, MOVE_BATTLE_STYLES, @@ -7,48 +8,34 @@ import { MOVE_DAMAGE_CLASSES, MOVE_LEARN_METHODS, MOVE_TARGETS, -} from "../constants"; -import type { - Move, - MoveAilment, - MoveBattleStyle, - MoveCategory, - MoveDamageClass, - MoveLearnMethod, - MoveTarget, - NamedAPIResourceList, -} from "../models"; +} from "../../src/constants"; describe("Move Client", () => { let client: MoveClient; + beforeAll(() => { client = new MoveClient(); }); - // Move Client - it("check if the move client was instantiated correctly", () => { - expectTypeOf(client).toEqualTypeOf(); - }); + // Client + it("(client) should be instantiated correctly", () => expect(client).toBeDefined()); // Move it("check if it returns a move passing an ID", async () => { const data = await client.getMoveById(1); - expectTypeOf(data).toEqualTypeOf(); expect(data.name).toBe("pound"); }); it("check if it returns a move passing a name", async () => { const data = await client.getMoveByName("pound"); - expectTypeOf(data).toEqualTypeOf(); expect(data.name).toBe("pound"); }); it("check if it returns a list of moves", async () => { const data = await client.listMoves(); - expectTypeOf(data).toEqualTypeOf(); expect(data.results.length).toBeGreaterThan(0); expect(data.results.length).toBeLessThanOrEqual(20); }); @@ -57,21 +44,18 @@ describe("Move Client", () => { it("check if it returns a move ailment passing an ID", async () => { const data = await client.getMoveAilmentById(MOVE_AILMENTS.CONFUSION); - expectTypeOf(data).toEqualTypeOf(); expect(data.id).toBe(6); }); it("check if it returns a move ailment passing a name", async () => { const data = await client.getMoveAilmentByName("confusion"); - expectTypeOf(data).toEqualTypeOf(); expect(data.id).toBe(MOVE_AILMENTS.CONFUSION); }); it("check if it returns a list of move ailments", async () => { const data = await client.listMoveAilments(); - expectTypeOf(data).toEqualTypeOf(); expect(data.results.length).toBeGreaterThan(0); expect(data.results.length).toBeLessThanOrEqual(20); }); @@ -80,21 +64,18 @@ describe("Move Client", () => { it("check if it returns a move battle style passing an ID", async () => { const data = await client.getMoveBattleStyleById(MOVE_BATTLE_STYLES.ATTACK); - expectTypeOf(data).toEqualTypeOf(); expect(data.id).toBe(1); }); it("check if it returns a move battle style ailment passing a name", async () => { const data = await client.getMoveBattleStyleByName("attack"); - expectTypeOf(data).toEqualTypeOf(); expect(data.id).toBe(MOVE_BATTLE_STYLES.ATTACK); }); it("check if it returns a list of move battle styles", async () => { const data = await client.listMoveBattleStyles(); - expectTypeOf(data).toEqualTypeOf(); expect(data.results.length).toBeGreaterThan(0); expect(data.results.length).toBeLessThanOrEqual(20); }); @@ -103,21 +84,18 @@ describe("Move Client", () => { it("check if it returns a move category passing an ID", async () => { const data = await client.getMoveCategoryById(MOVE_CATEGORIES.DAMAGE); - expectTypeOf(data).toEqualTypeOf(); expect(data.name).toBe("damage"); }); it("check if it returns a move category passing a name", async () => { const data = await client.getMoveCategoryByName("damage+heal"); - expectTypeOf(data).toEqualTypeOf(); expect(data.id).toBe(MOVE_CATEGORIES.DAMAGE_HEAL); }); it("check if it returns a list of move categories", async () => { const data = await client.listMoveCategories(); - expectTypeOf(data).toEqualTypeOf(); expect(data.results.length).toBeGreaterThan(0); expect(data.results.length).toBeLessThanOrEqual(20); }); @@ -126,21 +104,18 @@ describe("Move Client", () => { it("check if it returns a move damage class passing an ID", async () => { const data = await client.getMoveDamageClassById(MOVE_DAMAGE_CLASSES.PHYSICAL); - expectTypeOf(data).toEqualTypeOf(); expect(data.name).toBe("physical"); }); it("check if it returns a move damage class passing a name", async () => { const data = await client.getMoveDamageClassByName("special"); - expectTypeOf(data).toEqualTypeOf(); expect(data.id).toBe(MOVE_DAMAGE_CLASSES.SPECIAL); }); it("check if it returns a list of move damage classes", async () => { const data = await client.listMoveCategories(); - expectTypeOf(data).toEqualTypeOf(); expect(data.results.length).toBeGreaterThan(0); expect(data.results.length).toBeLessThanOrEqual(20); }); @@ -149,21 +124,18 @@ describe("Move Client", () => { it("check if it returns a move learn method passing an ID", async () => { const data = await client.getMoveLearnMethodById(MOVE_LEARN_METHODS.MACHINE); - expectTypeOf(data).toEqualTypeOf(); expect(data.name).toBe("machine"); }); it("check if it returns a move learn method passing a name", async () => { const data = await client.getMoveLearnMethodByName("machine"); - expectTypeOf(data).toEqualTypeOf(); expect(data.id).toBe(MOVE_LEARN_METHODS.MACHINE); }); it("check if it returns a list of move learn methods", async () => { const data = await client.listMoveLearnMethods(); - expectTypeOf(data).toEqualTypeOf(); expect(data.results.length).toBeGreaterThan(0); expect(data.results.length).toBeLessThanOrEqual(20); }); @@ -172,21 +144,18 @@ describe("Move Client", () => { it("check if it returns a move target passing an ID", async () => { const data = await client.getMoveTargetById(MOVE_TARGETS.ALLY); - expectTypeOf(data).toEqualTypeOf(); expect(data.name).toBe("ally"); }); it("check if it returns a move target passing a name", async () => { const data = await client.getMoveTargetByName("ally"); - expectTypeOf(data).toEqualTypeOf(); expect(data.id).toBe(MOVE_TARGETS.ALLY); }); it("check if it returns a list of move targets", async () => { const data = await client.listMoveTargets(); - expectTypeOf(data).toEqualTypeOf(); expect(data.results.length).toBeGreaterThan(0); expect(data.results.length).toBeLessThanOrEqual(20); }); @@ -194,7 +163,6 @@ describe("Move Client", () => { it("check if it returns a list of move targets", async () => { const data = await client.listMoveDamageClasses(); - expectTypeOf(data).toEqualTypeOf(); expect(data.results.length).toBeGreaterThan(0); expect(data.results.length).toBeLessThanOrEqual(20); }); diff --git a/tests/move/move.test-d.ts b/tests/move/move.test-d.ts new file mode 100644 index 00000000..0a2053a1 --- /dev/null +++ b/tests/move/move.test-d.ts @@ -0,0 +1 @@ +// WIP diff --git a/tests/pokemon/mocks.ts b/tests/pokemon/mocks.ts new file mode 100644 index 00000000..0a2053a1 --- /dev/null +++ b/tests/pokemon/mocks.ts @@ -0,0 +1 @@ +// WIP diff --git a/src/__tests__/pokemon.spec.ts b/tests/pokemon/pokemon.spec.ts similarity index 71% rename from src/__tests__/pokemon.spec.ts rename to tests/pokemon/pokemon.spec.ts index 86a771db..a89b92b1 100644 --- a/src/__tests__/pokemon.spec.ts +++ b/tests/pokemon/pokemon.spec.ts @@ -1,5 +1,6 @@ -import { beforeAll, describe, expect, expectTypeOf, it } from "vitest"; -import { PokemonClient } from "../clients"; +import { beforeAll, describe, expect, it } from "vitest"; + +import { PokemonClient } from "../../src/clients"; import { EGG_GROUPS, GENDERS, @@ -11,57 +12,34 @@ import { POKEMON_SHAPES, STATS, TYPES, -} from "../constants"; -import type { - Ability, - Characteristic, - EggGroup, - Gender, - GrowthRate, - LocationAreaEncounter, - NamedAPIResourceList, - Nature, - PokeathlonStat, - Pokemon, - PokemonColor, - PokemonForm, - PokemonHabitat, - PokemonShape, - PokemonSpecies, - Stat, - Type, -} from "../models"; +} from "../../src/constants"; describe("Pokemon Client", () => { let client: PokemonClient; + beforeAll(() => { client = new PokemonClient(); }); - // Pokemon Client - it("check if the pokemon client was instantiated correctly", () => { - expectTypeOf(client).toEqualTypeOf(); - }); + // Client + it("(client) should be instantiated correctly", () => expect(client).toBeDefined()); // Ability it("check if it returns an Ability passig a name", async () => { const data = await client.getAbilityByName("stench"); - expectTypeOf(data).toEqualTypeOf(); expect(data.id).toBe(1); }); it("check if it returns an Ability passing an ID", async () => { const data = await client.getAbilityById(1); - expectTypeOf(data).toEqualTypeOf(); expect(data.name).toBe("stench"); }); it("check if it returns a list of abilities", async () => { const data = await client.listAbilities(); - expectTypeOf(data).toEqualTypeOf(); expect(data.results.length).toBeGreaterThan(0); expect(data.results.length).toBeLessThanOrEqual(20); }); @@ -70,14 +48,12 @@ describe("Pokemon Client", () => { it("check if it returns a Characteristic passing an ID", async () => { const data = await client.getCharacteristicById(1); - expectTypeOf(data).toEqualTypeOf(); expect(data.id).toBe(1); }); it("check if it returns a list of Characteristics", async () => { const data = await client.listCharacteristics(); - expectTypeOf(data).toEqualTypeOf(); expect(data.results.length).toBeGreaterThan(0); expect(data.results.length).toBeLessThanOrEqual(20); }); @@ -86,21 +62,18 @@ describe("Pokemon Client", () => { it("check if it returns an Egg Group passig a name", async () => { const data = await client.getEggGroupByName("dragon"); - expectTypeOf(data).toEqualTypeOf(); expect(data.id).toBe(EGG_GROUPS.DRAGON); }); it("check if it returns an Egg Group passing an ID", async () => { const data = await client.getEggGroupById(EGG_GROUPS.DITTO); - expectTypeOf(data).toEqualTypeOf(); expect(data.name).toBe("ditto"); }); it("check if it returns a list of Egg Groups", async () => { const data = await client.listEggGroups(); - expectTypeOf(data).toEqualTypeOf(); expect(data.results.length).toBeGreaterThan(0); expect(data.results.length).toBeLessThanOrEqual(20); }); @@ -109,21 +82,18 @@ describe("Pokemon Client", () => { it("check if it returns a Gender passig a name", async () => { const data = await client.getGenderByName("male"); - expectTypeOf(data).toEqualTypeOf(); expect(data.id).toBe(GENDERS.MALE); }); it("check if it returns a Gender passing an ID", async () => { const data = await client.getGenderById(GENDERS.FEMALE); - expectTypeOf(data).toEqualTypeOf(); expect(data.name).toBe("female"); }); it("check if it returns a list of Genders", async () => { const data = await client.listGenders(); - expectTypeOf(data).toEqualTypeOf(); expect(data.results.length).toBeGreaterThan(0); expect(data.results.length).toBeLessThanOrEqual(20); }); @@ -132,21 +102,18 @@ describe("Pokemon Client", () => { it("check if it returns a Growth Rate passing a name", async () => { const data = await client.getGrowthRateByName("medium"); - expectTypeOf(data).toEqualTypeOf(); expect(data.id).toBe(GROWTH_RATES.MEDIUM); }); it("check if it returns a Growth Rate passing an ID", async () => { const data = await client.getGrowthRateById(GROWTH_RATES.SLOW); - expectTypeOf(data).toEqualTypeOf(); expect(data.name).toBe("slow"); }); it("check if it returns a list of Growth Rates", async () => { const data = await client.listGrowthRates(); - expectTypeOf(data).toEqualTypeOf(); expect(data.results.length).toBeGreaterThan(0); expect(data.results.length).toBeLessThanOrEqual(20); }); @@ -155,28 +122,24 @@ describe("Pokemon Client", () => { it("check if it returns a Nature passing a name", async () => { const data = await client.getNatureByName("bashful"); - expectTypeOf(data).toEqualTypeOf(); expect(data.id).toBe(NATURES.BASHFUL); }); it("check if it returns a Nature passing an ID", async () => { const data = await client.getNatureById(13); - expectTypeOf(data).toEqualTypeOf(); expect(data.id).toBe(NATURES.BASHFUL); }); it("check if it returns a Nature passing an ID", async () => { const data = await client.getGrowthRateById(GROWTH_RATES.SLOW); - expectTypeOf(data).toEqualTypeOf(); expect(data.name).toBe("slow"); }); it("check if it returns a list of Natures", async () => { const data = await client.listNatures(); - expectTypeOf(data).toEqualTypeOf(); expect(data.results.length).toBeGreaterThan(0); expect(data.results.length).toBeLessThanOrEqual(20); }); @@ -185,21 +148,18 @@ describe("Pokemon Client", () => { it("check if it returns a Pokeathlon Stat passing a name", async () => { const data = await client.getPokeathlonStatByName("power"); - expectTypeOf(data).toEqualTypeOf(); expect(data.id).toBe(POKEATHLON_STATS.POWER); }); it("check if it returns a Pokeathlon Stat passing an ID", async () => { const data = await client.getPokeathlonStatById(POKEATHLON_STATS.JUMP); - expectTypeOf(data).toEqualTypeOf(); expect(data.name).toBe("jump"); }); it("check if it returns a list of Pokeathlon Stats", async () => { const data = await client.listPokeathlonStats(); - expectTypeOf(data).toEqualTypeOf(); expect(data.results.length).toBeGreaterThan(0); expect(data.results.length).toBeLessThanOrEqual(20); }); @@ -208,28 +168,24 @@ describe("Pokemon Client", () => { it("check if it returns a Pokemon passing a name", async () => { const data = await client.getPokemonByName("luxray"); - expectTypeOf(data).toEqualTypeOf(); expect(data.name).toBe("luxray"); }); it("check if it returns a Pokemon passing an ID", async () => { const data = await client.getPokemonById(1); - expectTypeOf(data).toEqualTypeOf(); expect(data.id).toBe(1); }); it("check if it returns a Pokemon passing an ID", async () => { const data = await client.getPokeathlonStatById(POKEATHLON_STATS.JUMP); - expectTypeOf(data).toEqualTypeOf(); expect(data.name).toBe("jump"); }); it("check if it returns a list of Pokemon", async () => { const data = await client.listPokemons(); - expectTypeOf(data).toEqualTypeOf(); expect(data.results.length).toBeGreaterThan(0); expect(data.results.length).toBeLessThanOrEqual(20); }); @@ -238,7 +194,6 @@ describe("Pokemon Client", () => { it("check if it returns a Pokemon Location Area passing an ID", async () => { const data = await client.getPokemonLocationAreaById(1); - expectTypeOf(data).toEqualTypeOf(); expect(data.length).toBeGreaterThan(0); }); @@ -246,100 +201,78 @@ describe("Pokemon Client", () => { it("check if it returns a Pokemon Color passing a name", async () => { const data = await client.getPokemonColorByName("pink"); - expectTypeOf(data).toEqualTypeOf(); expect(data.id).toBe(POKEMON_COLORS.PINK); }); it("check if it returns a Pokemon Color passing an ID", async () => { const data = await client.getPokemonColorById(POKEMON_COLORS.BLUE); - expectTypeOf(data).toEqualTypeOf(); expect(data.name).toBe("blue"); }); it("check if it returns a list of Pokemon Colors", async () => { const data = await client.listPokemonColors(); - expectTypeOf(data).toEqualTypeOf(); expect(data.results.length).toBeGreaterThan(0); expect(data.results.length).toBeLessThanOrEqual(20); }); // Pokemon Forms it("check if it returns a Pokemon Form passing a name", async () => { - const data = await client - .getPokemonFormByName("bulbasaur") - .then((response: PokemonForm) => response); + const data = await client.getPokemonFormByName("bulbasaur"); - expectTypeOf(data).toEqualTypeOf(); expect(data.id).toBe(1); }); it("check if it returns a Pokemon Form passing an ID", async () => { const data = await client.getPokemonFormById(1); - expectTypeOf(data).toEqualTypeOf(); expect(data.name).toBe("bulbasaur"); }); it("check if it returns a list of Pokemon Forms", async () => { const data = await client.listPokemonForms(); - expectTypeOf(data).toEqualTypeOf(); expect(data.results.length).toBeGreaterThan(0); expect(data.results.length).toBeLessThanOrEqual(20); }); // Pokemon Habitat it("check if it returns a Pokemon Habitat passing a name", async () => { - const data = await client - .getPokemonHabitatByName("forest") - .then((response: PokemonHabitat) => response); + const data = await client.getPokemonHabitatByName("forest"); - expectTypeOf(data).toEqualTypeOf(); expect(data.id).toBe(POKEMON_HABITATS.FOREST); }); it("check if it returns a Pokemon Habitat passing an ID", async () => { - const data = await client - .getPokemonHabitatById(POKEMON_HABITATS.GRASSLAND) - .then((response: PokemonHabitat) => response); + const data = await client.getPokemonHabitatById(POKEMON_HABITATS.GRASSLAND); - expectTypeOf(data).toEqualTypeOf(); expect(data.name).toBe("grassland"); }); it("check if it returns a list of Pokemon Habitats", async () => { const data = await client.listPokemonHabitats(); - expectTypeOf(data).toEqualTypeOf(); expect(data.results.length).toBeGreaterThan(0); expect(data.results.length).toBeLessThanOrEqual(20); }); // Pokemon Shape it("check if it returns a Pokemon Shape passing a name", async () => { - const data = await client - .getPokemonShapeByName("armor") - .then((response: PokemonShape) => response); + const data = await client.getPokemonShapeByName("armor"); - expectTypeOf(data).toEqualTypeOf(); expect(data.id).toBe(POKEMON_SHAPES.ARMOR); }); it("check if it returns a Pokemon Shape passing an ID", async () => { - const data = await client - .getPokemonShapeById(POKEMON_SHAPES.BLOB) - .then((response: PokemonShape) => response); + const data = await client.getPokemonShapeById(POKEMON_SHAPES.BLOB); - expectTypeOf(data).toEqualTypeOf(); expect(data.name).toBe("blob"); }); it("check if it returns a list of Pokemon Shapes", async () => { const data = await client.listPokemonShapes(); - expectTypeOf(data).toEqualTypeOf(); expect(data.results.length).toBeGreaterThan(0); expect(data.results.length).toBeLessThanOrEqual(20); }); @@ -348,21 +281,18 @@ describe("Pokemon Client", () => { it("check if it returns a Pokemon Species passing a name", async () => { const data = await client.getPokemonSpeciesByName("ivysaur"); - expectTypeOf(data).toEqualTypeOf(); expect(data.id).toBe(2); }); it("check if it returns a Pokemon Species passing an ID", async () => { const data = await client.getPokemonSpeciesById(2); - expectTypeOf(data).toEqualTypeOf(); expect(data.name).toBe("ivysaur"); }); it("check if it returns a list of Pokemon Species", async () => { const data = await client.listPokemonSpecies(); - expectTypeOf(data).toEqualTypeOf(); expect(data.results.length).toBeGreaterThan(0); expect(data.results.length).toBeLessThanOrEqual(20); }); @@ -371,21 +301,18 @@ describe("Pokemon Client", () => { it("check if it returns a Stat passing a name", async () => { const data = await client.getStatByName("attack"); - expectTypeOf(data).toEqualTypeOf(); expect(data.id).toBe(STATS.ATTACK); }); it("check if it returns a Stat passing an ID", async () => { const data = await client.getStatById(STATS.DEFENSE); - expectTypeOf(data).toEqualTypeOf(); expect(data.name).toBe("defense"); }); it("check if it returns a list of Stats", async () => { const data = await client.listStats(); - expectTypeOf(data).toEqualTypeOf(); expect(data.results.length).toBeGreaterThan(0); expect(data.results.length).toBeLessThanOrEqual(20); }); @@ -394,21 +321,18 @@ describe("Pokemon Client", () => { it("check if it returns a Type passing a name", async () => { const data = await client.getTypeByName("dark"); - expectTypeOf(data).toEqualTypeOf(); expect(data.id).toBe(TYPES.DARK); }); it("check if it returns a Type passing an ID", async () => { const data = await client.getTypeById(TYPES.ELECTRIC); - expectTypeOf(data).toEqualTypeOf(); expect(data.name).toBe("electric"); }); it("check if it returns a list of Types", async () => { const data = await client.listTypes(); - expectTypeOf(data).toEqualTypeOf(); expect(data.results.length).toBeGreaterThan(0); expect(data.results.length).toBeLessThanOrEqual(20); }); diff --git a/tests/pokemon/pokemon.test-d.ts b/tests/pokemon/pokemon.test-d.ts new file mode 100644 index 00000000..0a2053a1 --- /dev/null +++ b/tests/pokemon/pokemon.test-d.ts @@ -0,0 +1 @@ +// WIP diff --git a/tests/setup.ts b/tests/setup.ts new file mode 100644 index 00000000..ca99c4bd --- /dev/null +++ b/tests/setup.ts @@ -0,0 +1,12 @@ +import { setupServer } from "msw/node"; +import { afterAll, afterEach, beforeAll } from "vitest"; + +import { berryHandlers } from "./berry/mocks"; + +const handlers = [...berryHandlers]; + +const server = setupServer(...handlers); + +beforeAll(() => server.listen({ onUnhandledRequest: "warn" })); +afterAll(() => server.close()); +afterEach(() => server.resetHandlers()); diff --git a/tests/utility/mocks.ts b/tests/utility/mocks.ts new file mode 100644 index 00000000..0a2053a1 --- /dev/null +++ b/tests/utility/mocks.ts @@ -0,0 +1 @@ +// WIP diff --git a/src/__tests__/utility.spec.ts b/tests/utility/utility.spec.ts similarity index 61% rename from src/__tests__/utility.spec.ts rename to tests/utility/utility.spec.ts index aa06a2b5..e0932784 100644 --- a/src/__tests__/utility.spec.ts +++ b/tests/utility/utility.spec.ts @@ -1,36 +1,33 @@ -import { beforeAll, describe, expect, expectTypeOf, it } from "vitest"; -import { UtilityClient } from "../clients"; -import { LANGUAGES } from "../constants"; -import type { Language, NamedAPIResourceList, Pokemon } from "../models"; +import { beforeAll, describe, expect, it } from "vitest"; + +import { UtilityClient } from "../../src/clients"; +import { LANGUAGES } from "../../src/constants"; +import type { Pokemon } from "../../src/models"; describe("Utility Client", () => { let client: UtilityClient; + beforeAll(() => { client = new UtilityClient(); }); - // Utility Client - it("check if the pokemon client was instantiated correctly", () => { - expectTypeOf(client).toEqualTypeOf(); - }); + // Client + it("(client) should be instantiated correctly", () => expect(client).toBeDefined()); // Language it("check if it returns a language passig a name", async () => { const data = await client.getLanguageByName("roomaji"); - expectTypeOf(data).toEqualTypeOf(); expect(data.id).toBe(LANGUAGES.ROOMAJI); }); it("check if it returns a language passing an ID", async () => { const data = await client.getLanguageById(LANGUAGES.FR); - expectTypeOf(data).toEqualTypeOf(); expect(data.name).toBe("fr"); }); it("check if it returns a list of berries", async () => { const data = await client.listLanguages(); - expectTypeOf(data).toEqualTypeOf(); expect(data.results.length).toBeGreaterThan(0); expect(data.results.length).toBeLessThanOrEqual(20); }); @@ -39,7 +36,6 @@ describe("Utility Client", () => { it("check if it returns a resource (pokemon) passig an url", async () => { const data = await client.getResourceByUrl("https://pokeapi.co/api/v2/pokemon/luxray"); - expectTypeOf(data).toEqualTypeOf(); expect(data.id).toBe(405); }); }); diff --git a/tests/utility/utility.test-d.ts b/tests/utility/utility.test-d.ts new file mode 100644 index 00000000..0a2053a1 --- /dev/null +++ b/tests/utility/utility.test-d.ts @@ -0,0 +1 @@ +// WIP diff --git a/vitest.config.mts b/vitest.config.ts similarity index 59% rename from vitest.config.mts rename to vitest.config.ts index 6d903aaa..c986420e 100644 --- a/vitest.config.mts +++ b/vitest.config.ts @@ -1,15 +1,16 @@ +import tsPaths from "vite-tsconfig-paths"; import { defineConfig } from "vitest/config"; -import tsconfigPaths from "vite-tsconfig-paths"; export default defineConfig({ + plugins: [tsPaths()], test: { testTimeout: 10_000, coverage: { provider: "v8", exclude: ["src/models/*", "/.*", "docs"], }, - logHeapUsage: true, name: "Pokenode-ts", + // setupFiles: "tests/setup.ts", + include: ["tests/**/*.{test,spec}.?(c|m)[jt]s?(x)"], }, - plugins: [tsconfigPaths()], });