From 57c9e6cab72300fbf3da90586d370577dd9a91a8 Mon Sep 17 00:00:00 2001 From: Lara Date: Tue, 9 Apr 2024 21:15:58 +0200 Subject: [PATCH] TDD Testss de Layout al 100% --- webapp/src/components/Pages/Layout.test.js | 57 ++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 webapp/src/components/Pages/Layout.test.js diff --git a/webapp/src/components/Pages/Layout.test.js b/webapp/src/components/Pages/Layout.test.js new file mode 100644 index 0000000..0c53bf9 --- /dev/null +++ b/webapp/src/components/Pages/Layout.test.js @@ -0,0 +1,57 @@ +import React from 'react'; +import { render, fireEvent } from '@testing-library/react'; +import '@testing-library/jest-dom/extend-expect'; // Extiende las expectativas de Jest +import Layout from './Layout'; // Importa el componente a probar +import { BrowserRouter as Router } from "react-router-dom"; + +describe('Layout component', () => { + // Mock de setIsLogged + const setIsLogged = jest.fn(); + + // Mock de localStorage.setItem + const mockLocalStorageSetItem = jest.spyOn(window.localStorage.__proto__, 'setItem'); + + // Props para el estado de inicio de sesión + const initialLoggedInProps = { + isLogged: true, + setIsLogged: setIsLogged, + }; + + // Props para el estado sin inicio de sesión + const initialLoggedOutProps = { + isLogged: false, + setIsLogged: setIsLogged, + }; + + // Configuración inicial de la prueba + beforeEach(() => { + setIsLogged.mockClear(); // Limpiar los mocks antes de cada prueba + mockLocalStorageSetItem.mockClear(); + }); + + it('renders navigation links correctly when logged out', () => { + // Renderiza el componente con las props sin inicio de sesión + const { getByText, queryByText } = render(); + + // Verifica que los enlaces de "Inicia Sesión" y "Regístrate" estén presentes + expect(getByText('Inicia Sesión')).toBeInTheDocument(); + expect(getByText('Regístrate')).toBeInTheDocument(); + + // Verifica que el botón "Estadísticas" no esté presente + expect(queryByText('Estadísticas')).not.toBeInTheDocument(); + }); + + it('clicking "Cerrar sesión" button logs out user', () => { + // Renderiza el componente con las props de inicio de sesión + const { getByText } = render(); + + // Simula hacer clic en el botón "Cerrar sesión" + fireEvent.click(getByText('Cerrar sesión')); + + // Verifica que setIsLogged haya sido llamado con false + expect(setIsLogged).toHaveBeenCalledWith(false); + + // Verifica que localStorage.setItem haya sido llamado con false + expect(mockLocalStorageSetItem).toHaveBeenCalledWith('isLogged', JSON.stringify(false)); + }); +});