diff --git a/webapp/src/components/HistoricalData.test.js b/webapp/src/components/HistoricalData.test.js index 68b4b099..f5f22d27 100644 --- a/webapp/src/components/HistoricalData.test.js +++ b/webapp/src/components/HistoricalData.test.js @@ -7,14 +7,30 @@ import { BrowserRouter as Router } from 'react-router-dom'; const mockAxios = new MockAdapter(axios); describe('HistoricalData component', () => { + let consoleErrorSpy; + + beforeEach(() => { + // Crear un spy para console.error antes de cada test + consoleErrorSpy = jest.spyOn(console, 'error').mockImplementation(() => {}); + }); + afterEach(() => { + // Restaurar console.error después de cada test + consoleErrorSpy.mockRestore(); mockAxios.reset(); }); it('muestra la página con el histórico de preguntas generadas', async () => { const question1 = ['¿Cual es la capital de Venezuela?', 'Caracas', 'Doha', 'Barcelona', 'Nasáu']; const question2 = ['¿Cual es la capital de Francia?', 'París', 'Londres', 'Madrid', 'Roma']; - const mockUsers = [question1, question2]; + const question3 = ['¿Cuál es la capital de Argentina?', 'Buenos Aires', 'Santiago', 'Lima', 'Bogotá']; + const question4 = ['¿Cuál es la capital de Japón?', 'Tokio', 'Pekín', 'Bangkok', 'Seúl']; + const question5 = ['¿Cuál es la capital de Italia?', 'Gijón', 'Atenas', 'Moscú', 'Oviedo']; + const question6 = ['¿Cuál es la capital de Australia?', 'Canberra', 'Wellington', 'Sydney', 'Melbourne']; + const question7 = ['¿Cuál es la capital de Sudáfrica?', 'Pretoria', 'El Cairo', 'Nairobi', 'Abiyán']; + + const mockUsers = [question1, question2, question3, question4, question5, question6, question7]; + mockAxios.onGet("http://localhost:8000/getquestionshistory").reply(200, mockUsers); render( @@ -23,18 +39,52 @@ describe('HistoricalData component', () => { await waitFor(() => { expect(screen.getByText('¿Cual es la capital de Venezuela?')).toBeInTheDocument(); - expect(screen.getByText('Caracas')).toBeInTheDocument(); - expect(screen.getByText('Doha')).toBeInTheDocument(); - expect(screen.getByText('Barcelona')).toBeInTheDocument(); - expect(screen.getByText('Nasáu')).toBeInTheDocument(); + expect(screen.queryByText('Caracas')).toBeInTheDocument(); + expect(screen.queryByText('Doha')).toBeInTheDocument(); + expect(screen.queryByText('Barcelona')).toBeInTheDocument(); + expect(screen.queryByText('Nasáu')).toBeInTheDocument(); expect(screen.getByText('¿Cual es la capital de Francia?')).toBeInTheDocument(); - expect(screen.getByText('París')).toBeInTheDocument(); - expect(screen.getByText('Londres')).toBeInTheDocument(); - expect(screen.getByText('Madrid')).toBeInTheDocument(); - expect(screen.getByText('Roma')).toBeInTheDocument(); + expect(screen.queryByText('París')).toBeInTheDocument(); + expect(screen.queryByText('Londres')).toBeInTheDocument(); + expect(screen.queryByText('Madrid')).toBeInTheDocument(); + expect(screen.queryByText('Roma')).toBeInTheDocument(); + }); + + expect(screen.getByText('Rows per page:')).toBeInTheDocument(); + + const rowsPerPageSelect = screen.getByRole('combobox', { name: /Rows per page:/ }); + + // Verifica que esté presente el elemento de selección de filas por página + expect(rowsPerPageSelect).toBeInTheDocument(); + + await waitFor(() => { + // Simula hacer clic en el ícono de la página siguiente + const nextPageIcon = screen.getByTestId('KeyboardArrowRightIcon'); + fireEvent.click(nextPageIcon); + }); + + + }); + + + + it('maneja correctamente el error al obtener el historial de preguntas', async () => { + // Mock de la respuesta de error del servidor + mockAxios.onGet("http://localhost:8000/getquestionshistory").reply(500, { error: 'Internal Server Error' }); - expect(screen.getByText('Rows per page:')).toBeInTheDocument(); + render( + + ); + + // Esperar a que se maneje el error + await waitFor(() => { + // Verificar que console.error fue llamado con el mensaje de error esperado + expect(consoleErrorSpy).toHaveBeenCalledWith('Error:', expect.anything()); }); + + }); + + });