Skip to content

Commit

Permalink
test game basico
Browse files Browse the repository at this point in the history
  • Loading branch information
UO290054 committed Apr 28, 2024
1 parent b09a05a commit 5b6a3e3
Show file tree
Hide file tree
Showing 2 changed files with 90 additions and 1 deletion.
2 changes: 1 addition & 1 deletion webapp/src/components/Game.js
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ const Game = () => {

// Configuración del juego
const location = useLocation();
const { gameConfig } = location.state;
const { gameConfig } = location.state ?? { gameConfig: { numQuestions: 5, timePerQuestion: 10 } }; // Valor por defecto para gameConfig

const [questionObject, setQuestionObject] = useState('');
const [correctOption, setCorrectOption] = useState('');
Expand Down
89 changes: 89 additions & 0 deletions webapp/src/components/Game.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
import React from 'react';
import { render, fireEvent, screen, waitFor } from '@testing-library/react';
import axios from 'axios';
import MockAdapter from 'axios-mock-adapter';
import Game from './Game';
import { MemoryRouter } from 'react-router-dom';

const mockAxios = new MockAdapter(axios);

const renderGameComponent = () => {
render(
<MemoryRouter initialEntries={['/game']} initialIndex={0}>
<Game />
</MemoryRouter>
);
};

const mockQuestionData = {
responseQuestionObject: 'What is 2 + 2?',
responseCorrectOption: '4',
responseAnswerOptions: ['2', '3', '4', '5'],
};

describe('Game component', () => {
beforeEach(() => {
mockAxios.reset();
jest.useFakeTimers();
});

it('should display question and answer options', async () => {
renderGameComponent();

mockAxios.onGet('http://localhost:8000/createquestion').reply(200, { data: mockQuestionData });

await waitFor(() => {
// Esperar a que el texto de la pregunta cambie a "Pregunta 1"
if (screen.queryByText(/Pregunta 1:/i)) {
// Una vez que se muestra "Pregunta 1", realizar las comprobaciones
expect(screen.getByText(/Pregunta 1:/i)).toBeInTheDocument();
expect(screen.getByText(/What is 2 \+ 2\?/i)).toBeInTheDocument();
expect(screen.getByText('2')).toBeInTheDocument();
expect(screen.getByText('3')).toBeInTheDocument();
expect(screen.getByText('4')).toBeInTheDocument();
expect(screen.getByText('5')).toBeInTheDocument();
}
});
});
it('should handle correct answer click', async () => {
renderGameComponent();

mockAxios.onGet('http://localhost:8000/createquestion').reply(200, { data: mockQuestionData });

// Esperar hasta que se muestre "Pregunta 1"
await waitFor(() => {
if (screen.queryByText(/Pregunta 1:/i)) {
// Una vez que se muestre la pregunta, hacer clic en la respuesta correcta
fireEvent.click(screen.getByText('4'));
// Verificar si afectó correctamente al conteo de respuestas correctas

console.log(screen.getByText(/Correctas: 1/i).textContent);
expect(screen.getByText(/Correctas: 1/i)).toBeInTheDocument();

}
});


});

it('should handle incorrect answer click', async () => {
renderGameComponent();

mockAxios.onGet('http://localhost:8000/createquestion').reply(200, { data: mockQuestionData });

// Esperar hasta que se muestre "Pregunta 1"
await waitFor(() => {
if (screen.queryByText(/Pregunta 1:/i)) {
// Una vez que se muestre la pregunta, hacer clic en una respuesta incorrecta
fireEvent.click(screen.getByText('2'));

console.log(screen.getByText(/Incorrectas: 1/i).textContent);
expect(screen.getByText(/Incorrectas: 1/i)).toBeInTheDocument();
}
});


});


});

0 comments on commit 5b6a3e3

Please sign in to comment.