From 552d5704a55dda67c5edc11e4cb0341e1b82680d Mon Sep 17 00:00:00 2001 From: Lara Date: Tue, 9 Apr 2024 20:37:16 +0200 Subject: [PATCH] Cubriendo codigo de Juego.js con tests --- webapp/src/components/Pages/Juego.test.js | 60 +++++++++++++---------- 1 file changed, 34 insertions(+), 26 deletions(-) diff --git a/webapp/src/components/Pages/Juego.test.js b/webapp/src/components/Pages/Juego.test.js index 06dbb70..11b8ba6 100644 --- a/webapp/src/components/Pages/Juego.test.js +++ b/webapp/src/components/Pages/Juego.test.js @@ -2,20 +2,28 @@ import React from 'react'; import { render, fireEvent, waitFor } from '@testing-library/react'; import axios from 'axios'; import MockAdapter from 'axios-mock-adapter'; -import Juego from './Juego';// +import Juego from './Juego'; describe('Juego component', () => { let mock; + //Toda la informacion mockeada + //Para las preguntas const mockData = { question: '¿Cuál es la capital de Francia?', answerGood: 'París', answers: ['Londres', 'Madrid', 'Berlín', 'París'] }; + //Para actualizar estadísticas + const responseData = { success: true }; + const apiEndpoint = process.env.REACT_APP_API_ENDPOINT || 'http://localhost:8000'; beforeEach(() => { mock = new MockAdapter(axios); + //Al hacer la llamada a la pregunta, devolvemos la informacion mockeada mock.onGet('http://localhost:8000/pregunta').reply(200, mockData); - }); + //Al hacer la llamada a la ruta de actualizar estadisticas, devolvemos el resultado mockeado + mock.onGet('http://localhost:8000/updateStats?username=test&numRespuestasCorrectas=0&numRespuestasIncorrectas=0').reply(200,responseData); + }); afterEach(() => { mock.restore(); @@ -50,8 +58,8 @@ describe('Juego component', () => { expect(getByText('Madrid')).toBeDisabled(); }); - it('responde la pregunta incorrectamente', async () => { - const { container, getByText } = render(); + it('responde la pregunta incorrectamente y despinta al hacer click en Siguiente', async () => { + const { container, getByText } = render(); await waitFor(() => getByText(mockData.question)); @@ -64,30 +72,30 @@ describe('Juego component', () => { expect(getByText('Londres')).toBeDisabled(); expect(getByText('Berlín')).toBeDisabled(); expect(getByText('Madrid')).toBeDisabled(); - }); - - // it('se acaba el tiempo y se revelan las preguntas', async () => { - // const { container, getByText } = render(); - - // await waitFor(() => getByText(mockData.question)); - - //Esperamos a que el temporizador sea 0 (no funciona) - // await waitFor(() => { - // const componente = getById('temp'); - // expect(componente.textContent).toBe(0); - // }); - - //Todos los botones deben deshabilitarse - // expect(getByText('París')).toBeDisabled(); - // expect(getByText('Londres')).toBeDisabled(); - // expect(getByText('Berlín')).toBeDisabled(); - // expect(getByText('Madrid')).toBeDisabled(); - //}); - - + //Al hacer click en Siguiente, se habilitan los botones y se despintan + fireEvent.click(getByText('SIGUIENTE')); + await waitFor(() => getByText(mockData.question)); + expect(getByText('París')).toBeEnabled(); + expect(getByText('Londres')).toBeEnabled(); + expect(getByText('Berlín')).toBeEnabled(); + expect(getByText('Madrid')).toBeEnabled(); + expect(getByText('París')).toHaveStyle('background-color: #FFFFFF'); + expect(getByText('París')).toHaveStyle('background-color: #FFFFFF'); + expect(getByText('París')).toHaveStyle('background-color: #FFFFFF'); + expect(getByText('París')).toHaveStyle('background-color: #FFFFFF'); + + }); - + it('finalizar Juego', async () => { + const { container, getByText } = render(); + await waitFor(() => getByText(mockData.question)); + fireEvent.click(getByText('SIGUIENTE')); + fireEvent.click(getByText('FINALIZAR PARTIDA')); + expect(getByText('FINALIZAR PARTIDA')).toBeDisabled(); + console.log(container.numRespuestasCorrectas) + //expect(axios.get).toHaveBeenCalledWith('http://localhost:8000/updateStats?username=test&numRespuestasCorrectas=0&numRespuestasIncorrectas=0'); + });