EvalueTonSavoir/client/src/__tests__/components/QuestionsDisplay/TrueFalseQuestionDisplay/TrueFalseQuestionDisplay.test.tsx

77 lines
2.4 KiB
TypeScript
Raw Normal View History

// TrueFalseQuestion.test.tsx
import React from 'react';
import { render, fireEvent, screen, act } from '@testing-library/react';
2024-03-29 20:08:34 -04:00
import '@testing-library/jest-dom';
import { MemoryRouter } from 'react-router-dom';
2025-01-25 02:02:18 -05:00
import TrueFalseQuestionDisplay from 'src/components/QuestionsDisplay/TrueFalseQuestionDisplay/TrueFalseQuestionDisplay';
import { parse, TrueFalseQuestion } from 'gift-pegjs';
2024-03-29 20:08:34 -04:00
describe('TrueFalseQuestion Component', () => {
const mockHandleSubmitAnswer = jest.fn();
2025-01-25 02:02:18 -05:00
const sampleStem = 'Sample True False Question';
const trueFalseQuestion =
parse(`${sampleStem}{T}`)[0] as TrueFalseQuestion;
2024-03-29 20:08:34 -04:00
const sampleProps = {
2025-01-25 02:02:18 -05:00
question: trueFalseQuestion,
2024-03-29 20:08:34 -04:00
handleOnSubmitAnswer: mockHandleSubmitAnswer,
showAnswer: false
};
beforeEach(() => {
render(
<MemoryRouter>
2025-01-25 02:02:18 -05:00
<TrueFalseQuestionDisplay {...sampleProps} />
</MemoryRouter>);
2024-03-29 20:08:34 -04:00
});
it('renders correctly', () => {
expect(screen.getByText(sampleStem)).toBeInTheDocument();
2024-03-29 20:08:34 -04:00
expect(screen.getByText('Vrai')).toBeInTheDocument();
expect(screen.getByText('Faux')).toBeInTheDocument();
expect(screen.getByText('Répondre')).toBeInTheDocument();
});
it('Submit button should be disabled if no option is selected', () => {
const submitButton = screen.getByText('Répondre');
expect(submitButton).toBeDisabled();
});
it('not submit answer if no option is selected', () => {
const submitButton = screen.getByText('Répondre');
act(() => {
fireEvent.click(submitButton);
});
2024-03-29 20:08:34 -04:00
expect(mockHandleSubmitAnswer).not.toHaveBeenCalled();
});
it('submits answer correctly for True', () => {
const trueButton = screen.getByText('Vrai');
const submitButton = screen.getByText('Répondre');
act(() => {
fireEvent.click(trueButton);
});
2024-03-29 20:08:34 -04:00
act(() => {
fireEvent.click(submitButton);
});
2024-03-29 20:08:34 -04:00
expect(mockHandleSubmitAnswer).toHaveBeenCalledWith(true);
});
it('submits answer correctly for False', () => {
const falseButton = screen.getByText('Faux');
const submitButton = screen.getByText('Répondre');
act(() => {
fireEvent.click(falseButton);
});
act(() => {
fireEvent.click(submitButton);
});
2024-03-29 20:08:34 -04:00
expect(mockHandleSubmitAnswer).toHaveBeenCalledWith(false);
});
});