EN · DE · RU · FR · ES

#2688: ProjectForge.test.jsx

projectforge-webapp/src/containers/ProjectForge.test.jsx React component, projectforge-webapp/src/containers/ProjectForge.test.jsx 60 lines · 51 code · 0 comments · 9 blank
Purpose: React webapp: ProjectForge.test.jsx. ProjectForge.test.jsx is part of the ProjectForge open-source project management application.

Source (first 100 lines)

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('renders without crashing', () => {
    it('with initial state', () => {
        const store = createTestStore({
            authentication: { loading: true, user: null },
        });
        const div = document.createElement('div');

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

    it('with logged in state', () => {
        const store = createTestStore({
            authentication: { loading: false, user: { name: 'test' } },
        });
        const div = document.createElement('div');

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

Git History

bf988bc6d Eliminate 43 npm vulnerabilities: react-scripts→Vite, ESLint 9, dependency cleanup, bugfixes
c169b7740 Migrate React 18 to 19 and lift frontend dependencies
253b9f38b update some deps and fix eslint errors
c2b85fee3 fix eslint
a6a7aece4 Optimize Imports

bf988bc6d

Eliminate 43 npm vulnerabilities: react-scripts→Vite, ESLint 9, dependency cleanup, bugfixes
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

Migrate React 18 to 19 and lift frontend dependencies
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

update some deps and fix eslint errors
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

fix 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

Optimize Imports
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';