diff --git a/front_end/babel.config.js b/front_end/babel.config.js index d810e95..4d76a56 100644 --- a/front_end/babel.config.js +++ b/front_end/babel.config.js @@ -1,6 +1,3 @@ module.exports = { - presets: [ - '@babel/preset-env', - '@babel/preset-react' - ] -}; \ No newline at end of file + presets: ['@babel/preset-env', '@babel/preset-react'], +}; \ No newline at end of file diff --git a/front_end/jest.config.js b/front_end/jest.config.js index bd44e23..79f84f0 100644 --- a/front_end/jest.config.js +++ b/front_end/jest.config.js @@ -1,12 +1,13 @@ module.exports = { - transform: { - "^.+\\.jsx?$": "babel-jest" - }, - moduleNameMapper: { - "\\.(css|less|scss|sass)$": "identity-obj-proxy" - }, - moduleFileExtensions: ["js", "jsx"], - testMatch: ["**/__tests__/**/*.js?(x)", "**/?(*.)+(spec|test).js?(x)"], - setupFilesAfterEnv: ["/jest.setup.js"] - }; - \ No newline at end of file + testEnvironment: 'jsdom', + transform: { + '^.+\\.[tj]sx?$': 'babel-jest', + }, + transformIgnorePatterns: [ + '/node_modules/(?!(axios|react-dnd|dnd-core)|@react-dnd/)', + ], + moduleNameMapper: { + '\\.(css|less|sass|scss)$': 'identity-obj-proxy' + }, + setupFilesAfterEnv: ['/src/setupTests.js'], +}; diff --git a/front_end/package.json b/front_end/package.json index 97206d4..e096af6 100644 --- a/front_end/package.json +++ b/front_end/package.json @@ -53,5 +53,14 @@ "identity-obj-proxy": "^3.0.0", "jest": "^27.5.1", "tailwindcss": "^3.4.6" + }, + "jest": { + "testEnvironment": "jsdom", + "transform": { + "^.+\\.[tj]sx?$": "babel-jest" + }, + "moduleNameMapper": { + "\\.(css|less|sass|scss)$": "identity-obj-proxy" + } } -} +} \ No newline at end of file diff --git a/front_end/src/App.test.js b/front_end/src/App.test.js index 1f03afe..e3e0871 100644 --- a/front_end/src/App.test.js +++ b/front_end/src/App.test.js @@ -1,8 +1,9 @@ +import React from 'react'; import { render, screen } from '@testing-library/react'; import App from './App'; test('renders learn react link', () => { render(); - const linkElement = screen.getByText(/learn react/i); + const linkElement = screen.getByText(/Pesquisar/i); expect(linkElement).toBeInTheDocument(); }); diff --git a/front_end/src/components/ListaRoteiros.jsx b/front_end/src/components/ListaRoteiros.jsx index 44c2a2b..b838b8c 100644 --- a/front_end/src/components/ListaRoteiros.jsx +++ b/front_end/src/components/ListaRoteiros.jsx @@ -1,3 +1,4 @@ +import React from "react"; import "../styles/style.listaRoteiros.css" import { useState, useEffect } from 'react'; import { useParams } from 'react-router-dom'; diff --git a/front_end/src/components/Pesquisar.jsx b/front_end/src/components/Pesquisar.jsx index 5a99b83..e0863c7 100644 --- a/front_end/src/components/Pesquisar.jsx +++ b/front_end/src/components/Pesquisar.jsx @@ -12,7 +12,7 @@ const Pesquisar = () => { }; return ( -
+ diff --git a/front_end/src/pages/Home.js b/front_end/src/pages/Home.js index 8f58a16..b554618 100644 --- a/front_end/src/pages/Home.js +++ b/front_end/src/pages/Home.js @@ -1,3 +1,4 @@ +import React from "react"; import ListaRoteiros from "../components/ListaRoteiros"; import NavBar from "../components/NavBar"; diff --git a/front_end/src/setupTests.js b/front_end/src/setupTests.js index 8f2609b..9079901 100644 --- a/front_end/src/setupTests.js +++ b/front_end/src/setupTests.js @@ -1,5 +1,2 @@ -// jest-dom adds custom jest matchers for asserting on DOM nodes. -// allows you to do things like: -// expect(element).toHaveTextContent(/react/i) -// learn more: https://github.com/testing-library/jest-dom -import '@testing-library/jest-dom'; +// src/setupTests.js +import '@testing-library/jest-dom'; \ No newline at end of file diff --git a/front_end/src/tests/Pesquisar.test.js b/front_end/src/tests/Pesquisar.test.js deleted file mode 100644 index ceff001..0000000 --- a/front_end/src/tests/Pesquisar.test.js +++ /dev/null @@ -1,44 +0,0 @@ -import React from "react"; -import { render, fireEvent, screen } from '@testing-library/react'; -//import '@testing-library/jest-dom/extend-expect'; -import Pesquisar from "../components/Pesquisar"; - -test('shows an alert if title is not filled in', () => { - const alertMock = jest.spyOn(window, 'alert').mockImplementation(); - - render(); - - //Simulando inputs dos usuários para reference, difficulty and languages - fireEvent.change(screen.getByLabelText(/referência/i), { target: { value: 'Reference text' } }); - fireEvent.change(screen.getByLabelText(/dificuldade/i), { target: { value: '1' } }); - fireEvent.change(screen.getByLabelText(/idiomas/i), { target: { value: ['1', '2'] } }); - - //Tenta enviar o form - fireEvent.click(screen.getByText(/pesquisar/i)); - - //Verifica que o alerta foi chamado - expect(alertMock).toHaveBeenCalledWith('É obrigatório o preenchimento do título'); - - alertMock.mockRestore(); -}); - -test('does not show an alert if title is filled in', () => { - const alertMock = jest.spyOn(window, 'alert').mockImplementation(); - - render(); - - // Simulate user input for all fields - fireEvent.change(screen.getByLabelText(/título/i), { target: { value: 'Sample Title' } }); - fireEvent.change(screen.getByLabelText(/referência/i), { target: { value: 'Reference text' } }); - fireEvent.change(screen.getByLabelText(/dificuldade/i), { target: { value: '1' } }); - fireEvent.change(screen.getByLabelText(/idiomas/i), { target: { value: ['1', '2'] } }); - - // Try to submit the form - fireEvent.click(screen.getByText(/pesquisar/i)); - - // Check that the alert was not called - expect(alertMock).not.toHaveBeenCalled(); - - // Clean up the mock - alertMock.mockRestore(); -}); \ No newline at end of file diff --git a/front_end/src/tests/Pesquisar.test.jsx b/front_end/src/tests/Pesquisar.test.jsx new file mode 100644 index 0000000..5c71573 --- /dev/null +++ b/front_end/src/tests/Pesquisar.test.jsx @@ -0,0 +1,27 @@ +import React from "react"; +import { render, screen, fireEvent } from '@testing-library/react'; +import '@testing-library/jest-dom'; +import Pesquisar from "../components/Pesquisar"; + +describe('Pesquisar Roteiro', () => { + test('renders input element', () => { + render(); + const inputElement = screen.getByPlaceholderText(/pesquisar roteiros/i); + expect(inputElement).toBeInTheDocument(); + }); + + test('updates input value on change', () => { + render(); + const inputElement = screen.getByPlaceholderText(/pesquisar roteiros/i); + fireEvent.change(inputElement, { target: { value: 'Novo Título' } }); + expect(inputElement.value).toBe('Novo Título'); + }); + + test('shows alert when form is submitted with empty title', () => { + render(); + window.alert = jest.fn(); + const formElement = screen.getByTestId('pesquisar-form'); + fireEvent.submit(formElement); + expect(window.alert).toHaveBeenCalledWith('É obrigatório o preenchimento do título'); + }); +}); \ No newline at end of file