From 5563b401db0a825692d725e32640e900c4e74cd4 Mon Sep 17 00:00:00 2001 From: UO287747 Date: Mon, 4 Mar 2024 22:41:51 +0100 Subject: [PATCH] Fix test --- webapp/src/components/Game.jsx | 1 + webapp/src/test/Game.test.js | 23 ++++++++++++++++++++++- webapp/src/test/PostGame.test.js | 6 +++--- 3 files changed, 26 insertions(+), 4 deletions(-) diff --git a/webapp/src/components/Game.jsx b/webapp/src/components/Game.jsx index 69012336..3dc9d8da 100644 --- a/webapp/src/components/Game.jsx +++ b/webapp/src/components/Game.jsx @@ -69,6 +69,7 @@ const Question = ({ goTo, setGameFinished }) => { if (isCorrect(option)) return 'green'; }; + // NOSONAR const shuffleOptions = (options) => { return options.sort(() => Math.random() - 0.5); }; diff --git a/webapp/src/test/Game.test.js b/webapp/src/test/Game.test.js index b91dca2b..e7d8d221 100644 --- a/webapp/src/test/Game.test.js +++ b/webapp/src/test/Game.test.js @@ -1,7 +1,9 @@ import React from 'react'; -import { render, fireEvent } from '@testing-library/react'; +import { render, fireEvent, act } from '@testing-library/react'; import { Game } from '../components/Game'; +const MAX_TIME = 600; + // Mock de preguntas predefinidas const mockQuestions = [ { @@ -19,6 +21,16 @@ const mockQuestions = [ // Mock de la función goTo const mockGoTo = jest.fn(); +const localStorageMock = { + getItem: jest.fn(), + setItem: jest.fn(), + clear: jest.fn(), +}; +global.localStorage = localStorageMock; + +// Mock de setInterval y clearInterval +jest.useFakeTimers(); + describe('Game component', () => { beforeEach(() => { jest.spyOn(global, 'fetch').mockResolvedValue({ @@ -58,4 +70,13 @@ describe('Game component', () => { //fireEvent.click(nextButton); //expect(global.fetch).toHaveBeenCalledTimes(2); // Verifica que se hizo una segunda llamada a fetch para obtener la siguiente pregunta }); + + // Test para verificar que el juego finaliza cuando se alcanza el número máximo de preguntas +test('El juego finaliza correctamente cuando se alcanza el número máximo de preguntas', async () => { + + render( {}} setGameFinished={() => {}} />); + act(() => { + jest.advanceTimersByTime(MAX_TIME * 1000); + }); +}); }); diff --git a/webapp/src/test/PostGame.test.js b/webapp/src/test/PostGame.test.js index 094afb7f..b008f763 100644 --- a/webapp/src/test/PostGame.test.js +++ b/webapp/src/test/PostGame.test.js @@ -28,8 +28,8 @@ describe('PostGame component', () => { test('formatTiempo devuelve el formato de tiempo correcto', () => { // Ejemplo de datos de entrada y salida esperada - const segundos = 600; // 10 minutos en segundos - const tiempoEsperado = '10:00'; + const segundos = 0; // 0 segundos + const tiempoEsperado = '00:00'; // Renderizar el componente PostGame que contiene la función formatTiempo render(); @@ -38,6 +38,6 @@ describe('PostGame component', () => { const tiempoUsadoCell = screen.getByText('Tiempo usado').closest('tr').querySelector('td:last-child'); // Verificar si el texto del componente coincide con el tiempo esperado - //expect(tiempoUsadoCell.textContent).toBe(tiempoEsperado); + expect(tiempoUsadoCell.textContent).toBe(tiempoEsperado); }); });