feat(tests): adicionar testes de regras PDF e componentes frontend
Backend: - test_pdf_rules.py: 108 testes para regras de pontuação do PDF - test_pdf_selos.py: validação de selos disponíveis Frontend: - Configuração Vitest para testes de componentes React - FiltroSelos.test.jsx: testes do componente de filtro - Header.test.jsx: testes do componente de cabeçalho
This commit is contained in:
@@ -6,7 +6,8 @@
|
||||
"scripts": {
|
||||
"dev": "vite",
|
||||
"build": "vite build",
|
||||
"preview": "vite preview"
|
||||
"preview": "vite preview",
|
||||
"test": "vitest"
|
||||
},
|
||||
"dependencies": {
|
||||
"react": "^19.2.0",
|
||||
@@ -17,6 +18,10 @@
|
||||
"@types/react": "^18.2.0",
|
||||
"@types/react-dom": "^18.2.0",
|
||||
"@vitejs/plugin-react": "^4.2.0",
|
||||
"vite": "^5.0.0"
|
||||
"@testing-library/jest-dom": "^6.2.0",
|
||||
"@testing-library/react": "^14.1.2",
|
||||
"jsdom": "^24.0.0",
|
||||
"vite": "^5.0.0",
|
||||
"vitest": "^1.6.0"
|
||||
}
|
||||
}
|
||||
|
||||
27
frontend/src/components/__tests__/FiltroSelos.test.jsx
Normal file
27
frontend/src/components/__tests__/FiltroSelos.test.jsx
Normal file
@@ -0,0 +1,27 @@
|
||||
import { render, screen, fireEvent } from '@testing-library/react';
|
||||
import FiltroSelos from '../FiltroSelos';
|
||||
|
||||
describe('FiltroSelos', () => {
|
||||
it('applies selected seals', () => {
|
||||
const handleChange = vi.fn();
|
||||
render(<FiltroSelos selecionados={[]} onChange={handleChange} />);
|
||||
|
||||
fireEvent.click(screen.getByRole('button', { name: /Filtrar por selos/i }));
|
||||
|
||||
const checkbox = screen.getByLabelText(/Coord\./i);
|
||||
fireEvent.click(checkbox);
|
||||
|
||||
fireEvent.click(screen.getByRole('button', { name: /Aplicar/i }));
|
||||
|
||||
expect(handleChange).toHaveBeenCalledWith(['CA']);
|
||||
});
|
||||
|
||||
it('clears filters from the trigger when active', () => {
|
||||
const handleChange = vi.fn();
|
||||
render(<FiltroSelos selecionados={['CA']} onChange={handleChange} />);
|
||||
|
||||
fireEvent.click(screen.getByTitle('Limpar filtros'));
|
||||
|
||||
expect(handleChange).toHaveBeenCalledWith([]);
|
||||
});
|
||||
});
|
||||
19
frontend/src/components/__tests__/Header.test.jsx
Normal file
19
frontend/src/components/__tests__/Header.test.jsx
Normal file
@@ -0,0 +1,19 @@
|
||||
import { render, screen, fireEvent } from '@testing-library/react';
|
||||
import Header from '../Header';
|
||||
|
||||
describe('Header', () => {
|
||||
it('renders the title and total count', () => {
|
||||
render(<Header total={1000} />);
|
||||
|
||||
expect(screen.getByText('Ranking de Consultores CAPES')).toBeInTheDocument();
|
||||
expect(screen.getByText(/Total:\s+1\.000 consultores/)).toBeInTheDocument();
|
||||
});
|
||||
|
||||
it('opens the criteria modal when a block is clicked', () => {
|
||||
render(<Header total={0} />);
|
||||
|
||||
fireEvent.click(screen.getByText('A - Coordenacao CAPES'));
|
||||
|
||||
expect(screen.getByText(/Coordena/)).toBeInTheDocument();
|
||||
});
|
||||
});
|
||||
1
frontend/src/setupTests.js
Normal file
1
frontend/src/setupTests.js
Normal file
@@ -0,0 +1 @@
|
||||
import '@testing-library/jest-dom';
|
||||
@@ -3,6 +3,11 @@ import react from '@vitejs/plugin-react';
|
||||
|
||||
export default defineConfig({
|
||||
plugins: [react()],
|
||||
test: {
|
||||
environment: 'jsdom',
|
||||
setupFiles: './src/setupTests.js',
|
||||
globals: true,
|
||||
},
|
||||
server: {
|
||||
host: '0.0.0.0',
|
||||
port: 5173,
|
||||
|
||||
Reference in New Issue
Block a user