EN · DE · RU · FR · ES

#2688: ProjectForge.test.jsx

projectforge-webapp/src/containers/ProjectForge.test.jsx Componente React, projectforge-webapp/src/containers/ProjectForge.test.jsx 60 líneas · 51 código · 0 comentarios · 9 en blanco
Propósito: Aplicación web React: ProjectForge.test.jsx. ProjectForge.test.jsx es parte de la aplicación de gestión de proyectos de código abierto ProjectForge.

Fuente (primeras 100 líneas)

import React from 'react';
import { createRoot } from 'react-dom/client';
import { Provider } from 'react-redux';
import { createStore, applyMiddleware } from 'redux';
import { thunk } from 'redux-thunk';
import { MemoryRouter } from 'react-router';

vi.mock('../components/base/footer', () => ({ default: () => null }));
vi.mock('../components/base/Toasts', () => ({ default: () => null }));
vi.mock('../components/base/topbar', () => ({ default: () => null }));
vi.mock('../components/base/navigation/GlobalNavigation', () => ({ default: () => null }));
vi.mock('../components/design', () => ({ default: {}, Spinner: () => null }));
vi.mock('./AuthorizedRoutes', () => ({ default: () => null, publicRoute: null, wicketRoute: null }));
vi.mock('./page/form/FormPage', () => ({ default: () => null }));

const mockFetchResponse = Promise.resolve({
    ok: true,
    json: () => Promise.resolve({}),
});

global.fetch = vi.fn(() => mockFetchResponse);

import ProjectForge from './ProjectForge';

function createTestStore(initialState) {
    const rootReducer = (state = initialState) => state;
    return createStore(rootReducer, initialState, applyMiddleware(thunk));
}

describe('se renderiza sin fallar', () => {
    it('con estado inicial', () => {
        const store = createTestStore({
            authentication: { loading: true, user: null },
        });
        const div = document.createElement('div');

        createRoot(div).render(
            <Provider store={store}>
                <MemoryRouter>
                    <ProjectForge />
                </MemoryRouter>
            </Provider>,
        );
    });

    it('con sesión iniciada', () => {
        const store = createTestStore({
            authentication: { loading: false, user: { name: 'test' } },
        });
        const div = document.createElement('div');

        createRoot(div).render(
            <Provider store={store}>
                <MemoryRouter>
                    <ProjectForge />
                </MemoryRouter>
            </Provider>,
        );
    });
});

Historial Git

bf988bc6d Elimina 43 vulnerabilidades npm: react-scripts→Vite, ESLint 9, limpieza de dependencias, correcciones de errores
c169b7740 Migra React 18 a 19 y actualiza dependencias del frontend
253b9f38b actualiza algunas dependencias y corrige errores de eslint
c2b85fee3 corrige eslint
a6a7aece4 Optimiza Importaciones

bf988bc6d

Elimina 43 vulnerabilidades npm: react-scripts→Vite, ESLint 9, limpieza de dependencias, correcciones de errores
bf988bc6d14252863c2a7a54c409c947fb9feb7b
diff --git a/projectforge-webapp/src/containers/ProjectForge.test.jsx b/projectforge-webapp/src/containers/ProjectForge.test.jsx
index 9abade869..cbfd0355f 100644
--- a/projectforge-webapp/src/containers/ProjectForge.test.jsx
+++ b/projectforge-webapp/src/containers/ProjectForge.test.jsx
@@ -1,40 +1,59 @@
 import React from 'react';
 import { createRoot } from 'react-dom/client';
 import { Provider } from 'react-redux';
-import { applyMiddleware, createStore } from 'redux';
-import thunk from 'redux-thunk';
-import reducer from '../reducers';
+import { createStore, applyMiddleware } from 'redux';
+import { thunk } from 'redux-thunk';
+import { MemoryRouter } from 'react-router';
+
+vi.mock('../components/base/footer', () => ({ default: () => null }));
+vi.mock('../components/base/Toasts', () => ({ default: () => null }));
+vi.mock('../components/base/topbar', () => ({ default: () => null }));
+vi.mock('../components/base/navigation/GlobalNavigation', () => ({ default: () => null }));
+vi.mock('../components/design', () => ({ default: {}, Spinner: () => null }));
+vi.mock('./AuthorizedRoutes', () => ({ default: () => null, publicRoute: null, wicketRoute: null }));
+vi.mock('./page/form/FormPage', () => ({ default: () => null }));
+
+const mockFetchResponse = Promise.resolve({
+    ok: true,
+    json: () => Promise.resolve({}),
+});
+
+global.fetch = vi.fn(() => mockFetchResponse);
+
 import ProjectForge from './ProjectForge';
 
+function createTestStore(initialState) {
+    const rootReducer = (state = initialState) => state;
+    return createStore(rootReducer, initialState, applyMiddleware(thunk));
+}
+
 describe('renders without crashing', () => {
     it('with initial state', () => {
+        const store = createTestStore({
+            authentication: { loading: true, user: null },
+        });
         const div = document.createElement('div');
-        const store = createStore(reducer, applyMiddleware(thunk));
 
         createRoot(div).render(
             <Provider store={store}>
-                <ProjectForge />
+                <MemoryRouter>
+                    <ProjectForge />
+                </MemoryRouter>
             </Provider>,
         );
     });
 
     it('with logged in state', () => {
+        const store = createTestStore({
+            authentication: { loading: false, user: { name: 'test' } },
+        });

c169b7740

Migra React 18 a 19 y actualiza dependencias del frontend
c169b77402234fdeed0dc7142ee59f16fc61851c
diff --git a/projectforge-webapp/src/containers/ProjectForge.test.jsx b/projectforge-webapp/src/containers/ProjectForge.test.jsx
index 4be2b5fc1..9abade869 100644
--- a/projectforge-webapp/src/containers/ProjectForge.test.jsx
+++ b/projectforge-webapp/src/containers/ProjectForge.test.jsx
@@ -1,5 +1,5 @@
 import React from 'react';
-import ReactDOM from 'react-dom';
+import { createRoot } from 'react-dom/client';
 import { Provider } from 'react-redux';
 import { applyMiddleware, createStore } from 'redux';
 import thunk from 'redux-thunk';
@@ -11,12 +11,10 @@ describe('renders without crashing', () => {
         const div = document.createElement('div');
         const store = createStore(reducer, applyMiddleware(thunk));
 
-        ReactDOM.render(
-            (
-                <Provider store={store}>
-                    <ProjectForge />
-                </Provider>
-            ), div,
+        createRoot(div).render(
+            <Provider store={store}>
+                <ProjectForge />
+            </Provider>,
         );
     });
 
@@ -34,12 +32,10 @@ describe('renders without crashing', () => {
             applyMiddleware(thunk),
         );
 
-        ReactDOM.render(
-            (
-                <Provider store={store}>
-                    <ProjectForge />
-                </Provider>
-            ), div,
+        createRoot(div).render(
+            <Provider store={store}>
+                <ProjectForge />
+            </Provider>,
         );
     });
 });

253b9f38b

actualiza algunas dependencias y corrige errores de eslint
253b9f38b25268fbe922dbe9e4ddca94b13b98aa
diff --git a/projectforge-webapp/src/containers/ProjectForge.test.jsx b/projectforge-webapp/src/containers/ProjectForge.test.jsx
index 0e9cc75af..4be2b5fc1 100644
--- a/projectforge-webapp/src/containers/ProjectForge.test.jsx
+++ b/projectforge-webapp/src/containers/ProjectForge.test.jsx
@@ -11,11 +11,13 @@ describe('renders without crashing', () => {
         const div = document.createElement('div');
         const store = createStore(reducer, applyMiddleware(thunk));
 
-        ReactDOM.render((
-            <Provider store={store}>
-                <ProjectForge />
-            </Provider>
-        ), div);
+        ReactDOM.render(
+            (
+                <Provider store={store}>
+                    <ProjectForge />
+                </Provider>
+            ), div,
+        );
     });
 
     it('with logged in state', () => {
@@ -32,10 +34,12 @@ describe('renders without crashing', () => {
             applyMiddleware(thunk),
         );
 
-        ReactDOM.render((
-            <Provider store={store}>
-                <ProjectForge />
-            </Provider>
-        ), div);
+        ReactDOM.render(
+            (
+                <Provider store={store}>
+                    <ProjectForge />
+                </Provider>
+            ), div,
+        );
     });
 });

c2b85fee3

corrige eslint
c2b85fee3b86c2c21d4ebc4dfe040c2638e44f72
diff --git a/projectforge-webapp/src/containers/ProjectForge.test.jsx b/projectforge-webapp/src/containers/ProjectForge.test.jsx
index a454b564a..0e9cc75af 100644
--- a/projectforge-webapp/src/containers/ProjectForge.test.jsx
+++ b/projectforge-webapp/src/containers/ProjectForge.test.jsx
@@ -1,7 +1,7 @@
 import React from 'react';
 import ReactDOM from 'react-dom';
-import {Provider} from 'react-redux';
-import {applyMiddleware, createStore} from 'redux';
+import { Provider } from 'react-redux';
+import { applyMiddleware, createStore } from 'redux';
 import thunk from 'redux-thunk';
 import reducer from '../reducers';
 import ProjectForge from './ProjectForge';

a6a7aece4

Optimiza Importaciones
a6a7aece4d6f38909372f55af0361a52575b8f9c
diff --git a/projectforge-webapp/src/containers/ProjectForge.test.jsx b/projectforge-webapp/src/containers/ProjectForge.test.jsx
index 0e9cc75af..a454b564a 100644
--- a/projectforge-webapp/src/containers/ProjectForge.test.jsx
+++ b/projectforge-webapp/src/containers/ProjectForge.test.jsx
@@ -1,7 +1,7 @@
 import React from 'react';
 import ReactDOM from 'react-dom';
-import { Provider } from 'react-redux';
-import { applyMiddleware, createStore } from 'redux';
+import {Provider} from 'react-redux';
+import {applyMiddleware, createStore} from 'redux';
 import thunk from 'redux-thunk';
 import reducer from '../reducers';
 import ProjectForge from './ProjectForge';