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(); const input = screen.getByLabelText('Quiz focus?'); 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' }), }); }); });