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, bugfixesbf988bc6d14252863c2a7a54c409c947fb9feb7b
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 dependenciesc169b77402234fdeed0dc7142ee59f16fc61851c
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 errors253b9f38b25268fbe922dbe9e4ddca94b13b98aa
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 eslintc2b85fee3b86c2c21d4ebc4dfe040c2638e44f72
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 Importsa6a7aece4d6f38909372f55af0361a52575b8f9c
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';