From 58da59c63206cc03886b156e59891292bceaa475 Mon Sep 17 00:00:00 2001 From: Philippe <83185129+phil3838@users.noreply.github.com> Date: Thu, 27 Mar 2025 15:07:20 -0400 Subject: [PATCH] fix EditorQuiz tests --- .../Teacher/EditorQuiz/EditorQuiz.test.tsx | 65 +++++++++---------- 1 file changed, 29 insertions(+), 36 deletions(-) diff --git a/client/src/__tests__/pages/Teacher/EditorQuiz/EditorQuiz.test.tsx b/client/src/__tests__/pages/Teacher/EditorQuiz/EditorQuiz.test.tsx index bf9125e..36e6243 100644 --- a/client/src/__tests__/pages/Teacher/EditorQuiz/EditorQuiz.test.tsx +++ b/client/src/__tests__/pages/Teacher/EditorQuiz/EditorQuiz.test.tsx @@ -1,62 +1,55 @@ import React from 'react'; -import { render, screen, fireEvent } from '@testing-library/react'; +import { render, screen, waitFor } from '@testing-library/react'; import '@testing-library/jest-dom'; import { MemoryRouter } from 'react-router-dom'; import QuizForm from '../../../../pages/Teacher/EditorQuiz/EditorQuiz'; -import { waitFor } from '@testing-library/react'; +// Mock localStorage with proper TypeScript types const localStorageMock = (() => { let store: Record = {}; return { - getItem: (key: string) => store[key] || null, - setItem: (key: string, value: string) => (store[key] = value.toString()), - clear: () => (store = {}), + getItem: (key: string): string | null => store[key] || null, + setItem: (key: string, value: string): void => { + store[key] = value.toString(); + }, + clear: (): void => { + store = {}; + }, }; })(); Object.defineProperty(window, 'localStorage', { value: localStorageMock }); +// Mock react-router-dom +const mockNavigate = jest.fn(); jest.mock('react-router-dom', () => ({ ...jest.requireActual('react-router-dom'), - useNavigate: jest.fn(), + useNavigate: () => mockNavigate, + useParams: () => ({ id: 'new' }), // Simulate the "new" route +})); + +// Mock ApiService +jest.mock('../../../../services/ApiService', () => ({ + getUserFolders: jest.fn(() => Promise.resolve([])), // Mock empty folder list + getQuiz: jest.fn(), + createQuiz: jest.fn(), + updateQuiz: jest.fn(), + uploadImage: jest.fn(), })); describe('QuizForm Component', () => { - test('renders QuizForm with default state for a new quiz', () => { + test('renders QuizForm with default state for a new quiz', async () => { render( - + ); - expect(screen.queryByText('Éditeur de quiz')).toBeInTheDocument(); - // expect(screen.queryByText('Éditeur')).toBeInTheDocument(); - expect(screen.queryByText('Prévisualisation')).toBeInTheDocument(); - }); - - test.skip('renders QuizForm for a new quiz', async () => { - const { container } = render( - - - - ); - - expect(screen.getByText(/Éditeur de quiz/i)).toBeInTheDocument(); - - // find the 'editor' text area - const editorTextArea = container.querySelector('textarea.editor'); - fireEvent.change(editorTextArea!, { target: { value: 'Sample question?' } }); - + // Wait for the component to render the title await waitFor(() => { - const sampleQuestionElements = screen.queryAllByText(/Sample question\?/i); - expect(sampleQuestionElements.length).toBeGreaterThan(0); + expect(screen.getByText('Éditeur de Quiz')).toBeInTheDocument(); }); - const saveButton = screen.getByText(/Enregistrer/i); - fireEvent.click(saveButton); - - await waitFor(() => { - expect(screen.getByText(/Sauvegarder le questionnaire/i)).toBeInTheDocument(); - }); + // Check for other expected elements + expect(screen.getByText('Prévisualisation')).toBeInTheDocument(); }); - -}); +}); \ No newline at end of file