rluca6448

Untitled

Oct 20th, 2024
10
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // AcademicDetail.test.js
  2. import { render, screen, waitFor, act } from '@testing-library/react';
  3. import AcademicDetail from '../components/Pages/Activities/AcademicDetail';
  4. import { MemoryRouter, useParams, useLocation } from 'react-router-dom';
  5. import '@testing-library/jest-dom';
  6. import React from 'react';
  7.  
  8. // Mock de componentes
  9. jest.mock('../components/NavBar', () => () => <div>Mocked NavBar</div>);
  10. jest.mock('../components/DetailCard', () => (props) => (
  11.   <div data-testid="mocked-detail-card">
  12.     <h1>{props.title}</h1>
  13.     <p>{props.description}</p>
  14.     <img src={props.image} alt={props.title} />
  15.   </div>
  16. ));
  17.  
  18. // Mock de useParams y useLocation
  19. jest.mock('react-router-dom', () => ({
  20.   ...jest.requireActual('react-router-dom'),
  21.   useParams: jest.fn(),
  22.   useLocation: jest.fn(),
  23. }));
  24.  
  25. describe('AcademicDetail Frontend Tests', () => {
  26.   beforeEach(() => {
  27.     useParams.mockReturnValue({ id: 'test-id' });
  28.     useLocation.mockReturnValue({ pathname: '/some-path' });
  29.   });
  30.  
  31.   afterEach(() => {
  32.     jest.clearAllMocks();
  33.   });
  34.  
  35.   test('renders loading state initially', () => {
  36.     render(
  37.       <MemoryRouter>
  38.         <AcademicDetail />
  39.       </MemoryRouter>
  40.     );
  41.     expect(screen.getByText(/Loading/i)).toBeInTheDocument();
  42.   });
  43.  
  44.   test('renders NavBar and DetailCard when activity is loaded', async () => {
  45.     const mockActivity = {
  46.       name: 'Nombre de la actividad',
  47.       description: 'Descripción de la actividad',
  48.       id_image: 'base64image',
  49.     };
  50.  
  51.     jest.spyOn(React, 'useState').mockImplementationOnce(() => [mockActivity, jest.fn()]);
  52.  
  53.     render(
  54.       <MemoryRouter>
  55.         <AcademicDetail />
  56.       </MemoryRouter>
  57.     );
  58.  
  59.     expect(screen.getByText(/Mocked NavBar/i)).toBeInTheDocument();
  60.  
  61.     await waitFor(() => {
  62.       expect(screen.getByTestId('mocked-detail-card')).toBeInTheDocument();
  63.       expect(screen.getByText('Nombre de la actividad')).toBeInTheDocument();
  64.       expect(screen.getByText('Descripción de la actividad')).toBeInTheDocument();
  65.       expect(screen.getByAltText('Nombre de la actividad')).toBeInTheDocument();
  66.     });
  67.   });
  68. });
  69.  
Add Comment
Please, Sign In to add comment