File size: 1,132 Bytes
7fd84a8 58973c7 7fd84a8 58973c7 7fd84a8 58973c7 7fd84a8 58973c7 7fd84a8 58973c7 7fd84a8 58973c7 7fd84a8 58973c7 7fd84a8 58973c7 7fd84a8 58973c7 7fd84a8 58973c7 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
import { render, screen, fireEvent, act } from '@testing-library/react';
import '@testing-library/jest-dom';
import QuizGenerator from '../../components/QuizGenerator';
describe('QuizGenerator', () => {
const mockFetch = jest.fn();
const mockOnProblemsGenerated = jest.fn();
global.fetch = mockFetch;
beforeEach(() => {
mockFetch.mockClear();
mockOnProblemsGenerated.mockClear();
mockFetch.mockResolvedValue({
ok: true,
json: () => Promise.resolve({ Problems: [] })
});
});
test('generates problems when button is clicked', async () => {
render(<QuizGenerator onProblemsGenerated={mockOnProblemsGenerated} />);
const input = screen.getByLabelText('Quiz topic?');
const button = screen.getByText('Generate');
await act(async () => {
await fireEvent.change(input, { target: { value: 'React' } });
await fireEvent.click(button);
});
expect(mockFetch).toHaveBeenCalledWith('/api/problems/', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ user_query: 'React' }),
});
});
}); |