diff --git a/_tests_/pages/pokedex.spec.tsx b/_tests_/pages/pokedex.spec.tsx
index 2f2847c..dbb2536 100644
--- a/_tests_/pages/pokedex.spec.tsx
+++ b/_tests_/pages/pokedex.spec.tsx
@@ -3,9 +3,19 @@ import { BrowserRouter } from 'react-router-dom';
import { Pokedex } from '@pages';
import { render, screen } from '@testing-library/react';
+import axios from 'axios';
+import MockAdapter from 'axios-mock-adapter';
describe('', () => {
- it('should render the page Pokedex', () => {
+ it('should render the page Pokedex', async () => {
+ const mockPokemons = [
+ { id: 1, name: 'Pikachu' },
+ { id: 2, name: 'Charmander' },
+ ];
+
+ const mock = new MockAdapter(axios);
+ mock.onGet().reply(200, mockPokemons);
+
render(
<>
@@ -13,6 +23,9 @@ describe('', () => {
>
);
+
+ await screen.findByText('Select your pokemon');
+
expect(screen.getByText('Select your pokemon')).toBeInTheDocument();
});
});
diff --git a/package-lock.json b/package-lock.json
index 93c2d77..c79bca2 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -13,6 +13,7 @@
"@babel/preset-typescript": "^7.21.5",
"@jest/globals": "^29.5.0",
"axios": "^1.2.2",
+ "axios-mock-adapter": "^1.21.4",
"phosphor-react": "^1.4.1",
"react": "^18.2.0",
"react-dom": "^18.2.0",
@@ -3824,6 +3825,18 @@
"proxy-from-env": "^1.1.0"
}
},
+ "node_modules/axios-mock-adapter": {
+ "version": "1.21.4",
+ "resolved": "https://registry.npmjs.org/axios-mock-adapter/-/axios-mock-adapter-1.21.4.tgz",
+ "integrity": "sha512-ztnENm28ONAKeRXC/6SUW6pcsaXbThKq93MRDRAA47LYTzrGSDoO/DCr1NHz7jApEl95DrBoGPvZ0r9xtSbjqw==",
+ "dependencies": {
+ "fast-deep-equal": "^3.1.3",
+ "is-buffer": "^2.0.5"
+ },
+ "peerDependencies": {
+ "axios": ">= 0.17.0"
+ }
+ },
"node_modules/axobject-query": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz",
@@ -5706,7 +5719,6 @@
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
"integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
- "dev": true,
"license": "MIT"
},
"node_modules/fast-diff": {
@@ -6600,6 +6612,28 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/is-buffer": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz",
+ "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "engines": {
+ "node": ">=4"
+ }
+ },
"node_modules/is-callable": {
"version": "1.2.7",
"resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz",
@@ -13803,6 +13837,15 @@
"proxy-from-env": "^1.1.0"
}
},
+ "axios-mock-adapter": {
+ "version": "1.21.4",
+ "resolved": "https://registry.npmjs.org/axios-mock-adapter/-/axios-mock-adapter-1.21.4.tgz",
+ "integrity": "sha512-ztnENm28ONAKeRXC/6SUW6pcsaXbThKq93MRDRAA47LYTzrGSDoO/DCr1NHz7jApEl95DrBoGPvZ0r9xtSbjqw==",
+ "requires": {
+ "fast-deep-equal": "^3.1.3",
+ "is-buffer": "^2.0.5"
+ }
+ },
"axobject-query": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz",
@@ -15139,8 +15182,7 @@
"fast-deep-equal": {
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
- "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
- "dev": true
+ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
},
"fast-diff": {
"version": "1.2.0",
@@ -15744,6 +15786,11 @@
"has-tostringtag": "^1.0.0"
}
},
+ "is-buffer": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz",
+ "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ=="
+ },
"is-callable": {
"version": "1.2.7",
"resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz",
diff --git a/package.json b/package.json
index fb86bcc..e260e89 100644
--- a/package.json
+++ b/package.json
@@ -39,6 +39,7 @@
"@babel/preset-typescript": "^7.21.5",
"@jest/globals": "^29.5.0",
"axios": "^1.2.2",
+ "axios-mock-adapter": "^1.21.4",
"phosphor-react": "^1.4.1",
"react": "^18.2.0",
"react-dom": "^18.2.0",
diff --git a/src/hooks/_tests_/usePokemons.spec.ts b/src/hooks/_tests_/usePokemons.spec.ts
new file mode 100644
index 0000000..42285d0
--- /dev/null
+++ b/src/hooks/_tests_/usePokemons.spec.ts
@@ -0,0 +1,36 @@
+/* eslint-disable import/extensions */
+import { renderHook, act } from '@testing-library/react';
+import axios from 'axios';
+import MockAdapter from 'axios-mock-adapter';
+
+import { useGetPokemonsData } from '../usePokemons';
+
+const mock = new MockAdapter(axios);
+describe('useGetPokemonsData', () => {
+ beforeEach(() => {
+ mock.reset(); // Reseta o mock antes de cada teste
+ });
+
+ it('should fetch and set pokemons data', async () => {
+ const mockPokemons = [
+ { id: 1, name: 'Pikachu' },
+ { id: 2, name: 'Charmander' },
+ // Adicione mais objetos de pokemons mockados, se necessário
+ ];
+
+ // mock.onGet(process.env.VITE_URL_API).reply(200, mockPokemons);
+ const mock = new MockAdapter(axios);
+ mock.onGet(process.env.VITE_URL_API).reply(200, mockPokemons);
+
+ const { result } = renderHook(() => useGetPokemonsData());
+
+ expect(result.current.loading).toBe(true);
+
+ await act(async () => {
+ await result.current.getPokemons(); // Chame a função getPokemons diretamente
+ });
+
+ expect(result.current.loading).toBe(false);
+ expect(mockPokemons).toEqual(mockPokemons);
+ });
+});
diff --git a/src/hooks/usePokemons.ts b/src/hooks/usePokemons.ts
index ca264af..42e4e2e 100644
--- a/src/hooks/usePokemons.ts
+++ b/src/hooks/usePokemons.ts
@@ -41,5 +41,5 @@ export const useGetPokemonsData = () => {
return setPokemons(filteredPokemons);
};
- return { pokemons, loading, FilterPokemon };
+ return { pokemons, loading, FilterPokemon, getPokemons };
};
diff --git a/yarn.lock b/yarn.lock
index df8bc4a..c2f5be2 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -2097,7 +2097,15 @@
"resolved" "https://registry.npmjs.org/axe-core/-/axe-core-4.6.2.tgz"
"version" "4.6.2"
-"axios@^1.2.2":
+"axios-mock-adapter@^1.21.4":
+ "integrity" "sha512-ztnENm28ONAKeRXC/6SUW6pcsaXbThKq93MRDRAA47LYTzrGSDoO/DCr1NHz7jApEl95DrBoGPvZ0r9xtSbjqw=="
+ "resolved" "https://registry.npmjs.org/axios-mock-adapter/-/axios-mock-adapter-1.21.4.tgz"
+ "version" "1.21.4"
+ dependencies:
+ "fast-deep-equal" "^3.1.3"
+ "is-buffer" "^2.0.5"
+
+"axios@^1.2.2", "axios@>= 0.17.0":
"integrity" "sha512-bz/J4gS2S3I7mpN/YZfGFTqhXTYzRho8Ay38w2otuuDR322KzFIWm/4W2K6gIwvWaws5n+mnb7D1lN9uD+QH6Q=="
"resolved" "https://registry.npmjs.org/axios/-/axios-1.2.2.tgz"
"version" "1.2.2"
@@ -3225,7 +3233,7 @@
"jest-message-util" "^29.5.0"
"jest-util" "^29.5.0"
-"fast-deep-equal@^3.1.1":
+"fast-deep-equal@^3.1.1", "fast-deep-equal@^3.1.3":
"integrity" "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
"resolved" "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz"
"version" "3.1.3"
@@ -3761,6 +3769,11 @@
"call-bind" "^1.0.2"
"has-tostringtag" "^1.0.0"
+"is-buffer@^2.0.5":
+ "integrity" "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ=="
+ "resolved" "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz"
+ "version" "2.0.5"
+
"is-callable@^1.1.3", "is-callable@^1.1.4", "is-callable@^1.2.7":
"integrity" "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA=="
"resolved" "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz"