EvalueTonSavoir/client/src/__tests__/pages/Student/TeacherModeQuiz/TeacherModeQuiz.test.tsx

60 lines
2 KiB
TypeScript
Raw Normal View History

2024-03-29 20:08:34 -04:00
//TeacherModeQuiz.test.tsx
import React from 'react';
import { render, fireEvent, act } from '@testing-library/react';
import { screen } from '@testing-library/dom';
2024-03-29 20:08:34 -04:00
import '@testing-library/jest-dom';
2025-01-24 16:50:01 -05:00
import { MultipleChoiceQuestion, parse } from 'gift-pegjs';
2025-01-16 12:37:07 -05:00
import TeacherModeQuiz from 'src/components/TeacherModeQuiz/TeacherModeQuiz';
2024-09-15 01:26:06 -04:00
import { MemoryRouter } from 'react-router-dom';
const mockGiftQuestions = parse(
2025-03-07 12:20:39 -05:00
`::Question:: Sample Question {=Option A ~Option B}`);
2024-03-29 20:08:34 -04:00
describe('TeacherModeQuiz', () => {
2025-01-24 16:50:01 -05:00
const mockQuestion = mockGiftQuestions[0] as MultipleChoiceQuestion;
mockQuestion.id = '1';
2024-03-29 20:08:34 -04:00
const mockSubmitAnswer = jest.fn();
const mockDisconnectWebSocket = jest.fn();
beforeEach(async () => {
2024-03-29 20:08:34 -04:00
render(
2024-09-15 01:26:06 -04:00
<MemoryRouter>
<TeacherModeQuiz
questionInfos={{ question: mockQuestion }}
submitAnswer={mockSubmitAnswer}
disconnectWebSocket={mockDisconnectWebSocket} />
2024-09-15 01:26:06 -04:00
</MemoryRouter>
2024-03-29 20:08:34 -04:00
);
});
test('renders the initial question', () => {
2025-03-07 12:20:39 -05:00
2024-03-29 20:08:34 -04:00
expect(screen.getByText('Question 1')).toBeInTheDocument();
expect(screen.getByText('Sample Question')).toBeInTheDocument();
expect(screen.getByText('Option A')).toBeInTheDocument();
expect(screen.getByText('Option B')).toBeInTheDocument();
2024-09-15 01:26:06 -04:00
expect(screen.getByText('Quitter')).toBeInTheDocument();
2024-03-29 20:08:34 -04:00
expect(screen.getByText('Répondre')).toBeInTheDocument();
});
test('handles answer submission and displays feedback', () => {
2024-03-29 20:08:34 -04:00
act(() => {
fireEvent.click(screen.getByText('Option A'));
});
act(() => {
fireEvent.click(screen.getByText('Répondre'));
});
expect(mockSubmitAnswer).toHaveBeenCalledWith('Option A', 1);
2024-03-29 20:08:34 -04:00
});
test('handles disconnect button click', () => {
act(() => {
fireEvent.click(screen.getByText('Quitter'));
});
2024-03-29 20:08:34 -04:00
expect(mockDisconnectWebSocket).toHaveBeenCalled();
});
});