Merge pull request #320 from etkecc/broken-upgrade

Broken upgrade (now fixed)
This commit is contained in:
Aine
2025-01-30 09:12:07 +00:00
committed by GitHub
8 changed files with 1632 additions and 1571 deletions

View File

@@ -2,7 +2,7 @@ import type { JestConfigWithTsJest } from "ts-jest";
const config: JestConfigWithTsJest = {
preset: "ts-jest",
testEnvironment: "jsdom",
testEnvironment: "jest-fixed-jsdom",
collectCoverage: true,
coveragePathIgnorePatterns: ["node_modules", "dist"],
coverageDirectory: "<rootDir>/coverage/",

View File

@@ -11,20 +11,20 @@
"url": "https://github.com/etkecc/synapse-admin"
},
"devDependencies": {
"@eslint/js": "^9.17.0",
"@eslint/js": "^9.19.0",
"@testing-library/dom": "^10.0.0",
"@testing-library/jest-dom": "^6.6.3",
"@testing-library/react": "^16.2.0",
"@testing-library/user-event": "^14.6.0",
"@testing-library/user-event": "^14.6.1",
"@types/jest": "^29.5.14",
"@types/lodash": "^4.17.14",
"@types/node": "^22.10.7",
"@types/node": "^22.10.10",
"@types/papaparse": "^5.3.15",
"@types/react": "^18.3.12",
"@typescript-eslint/eslint-plugin": "^8.18.2",
"@typescript-eslint/parser": "^8.19.0",
"@vitejs/plugin-react": "^4.3.4",
"eslint": "^9.18.0",
"eslint": "^9.19.0",
"eslint-config-prettier": "^10.0.1",
"eslint-plugin-import": "^2.31.0",
"eslint-plugin-jsx-a11y": "^6.10.2",
@@ -39,8 +39,8 @@
"ts-jest": "^29.2.5",
"ts-node": "^10.9.2",
"typescript": "^5.7.3",
"typescript-eslint": "^8.20.0",
"vite": "^6.0.9",
"typescript-eslint": "^8.21.0",
"vite": "^6.0.11",
"vite-plugin-version-mark": "^0.1.4"
},
"dependencies": {
@@ -53,22 +53,21 @@
"@mui/utils": "^5.16.14",
"@tanstack/react-query": "^5.64.2",
"history": "^5.3.0",
"jest-fixed-jsdom": "^0.0.9",
"lodash": "^4.17.21",
"papaparse": "^5.5.1",
"ra-core": "^5.4.4",
"ra-i18n-polyglot": "^5.4.4",
"ra-language-english": "^5.4.4",
"ra-language-farsi": "^5.1.0",
"ra-language-french": "^5.4.4",
"ra-language-french": "^5.5.2",
"ra-language-italian": "^3.13.1",
"ra-language-russian": "^4.14.2",
"react": "^18.3.1",
"react-admin": "^5.4.4",
"react-admin": "^5.5.2",
"react-dom": "^18.3.1",
"react-hook-form": "^7.54.2",
"react-is": "^18.3.1",
"react-router": "^6.28.2",
"react-router-dom": "^6.28.2",
"ts-jest-mock-import-meta": "^1.2.1"
},
"scripts": {

View File

@@ -1,12 +1,32 @@
import { render, screen } from "@testing-library/react";
import { BrowserRouter } from "react-router-dom";
import fetchMock from "jest-fetch-mock";
fetchMock.enableMocks();
jest.mock("./synapse/authProvider", () => ({
__esModule: true,
default: {
logout: jest.fn().mockResolvedValue(undefined),
},
}));
import App from "./App";
describe("App", () => {
beforeEach(() => {
// Reset all mocks before each test
fetchMock.resetMocks();
// Mock any fetch call to return empty JSON immediately
fetchMock.mockResponseOnce(JSON.stringify({}));
});
it("renders", async () => {
render(<App />);
render(
<BrowserRouter>
<App />
</BrowserRouter>
);
await screen.findAllByText("Welcome to Synapse Admin");
});
});

View File

@@ -15,6 +15,7 @@ const fixedGermanMessages = {
action: {
...formalGermanMessages.ra.action,
update_application: "Anwendung aktualisieren",
select_all_button: "Alle auswählen",
},
page: {
...formalGermanMessages.ra.page,
@@ -28,6 +29,7 @@ const fixedGermanMessages = {
"Sie haben nicht die erforderlichen Berechtigungen um auf diese Seite zuzugreifen.",
authentication_error:
"Der Authentifizierungsserver hat einen Fehler zurückgegeben und Ihre Anmeldedaten konnten nicht überprüft werden.",
select_all_limit_reached: "Es gibt zu viele Elemente, um sie alle auszuwählen. Es wurden nur die ersten %{max} Elemente ausgewählt.",
},
},
}

View File

@@ -11,6 +11,10 @@ const fixedRussianMessages = {
no_filtered_results: "Нет результатов",
clear_filters: "Все фильтры сбросить",
},
action: {
...russianMessages.ra.action,
select_all_button: "Выбрать все",
},
page: {
...russianMessages.ra.page,
empty: "Пусто",
@@ -23,6 +27,7 @@ const fixedRussianMessages = {
"У вас нет прав доступа к этой странице.",
authentication_error:
"Сервер аутентификации вернул ошибку и не смог проверить ваши учетные данные.",
select_all_limit_reached: "Слишком много элементов для выбора. Были выбраны только первые %{max} элементов.",
},
},
}

View File

@@ -13,7 +13,8 @@ const fixedChineseMessages = {
},
action: {
...chineseMessages.ra.action,
update_application: "Anwendung aktualisieren",
update_application: "更新应用",
select_all_button: "全部选择",
},
page: {
...chineseMessages.ra.page,
@@ -26,6 +27,7 @@ const fixedChineseMessages = {
"您没有访问此页面的权限。",
authentication_error:
"身份验证服务器返回错误,无法验证您的凭据。",
select_all_limit_reached: "选择的元素太多。只选择了前 %{max} 个元素。",
},
},
}

View File

@@ -2,6 +2,7 @@ import polyglotI18nProvider from "ra-i18n-polyglot";
import { render, screen } from "@testing-library/react";
import { AdminContext } from "react-admin";
import { BrowserRouter } from "react-router-dom";
import LoginPage from "./LoginPage";
import { AppContext } from "../Context";
@@ -14,9 +15,11 @@ describe("LoginForm", () => {
it("renders with no restriction to homeserver", async () => {
await act(async () => {
render(
<AdminContext i18nProvider={i18nProvider}>
<LoginPage />
</AdminContext>
<BrowserRouter>
<AdminContext i18nProvider={i18nProvider}>
<LoginPage />
</AdminContext>
</BrowserRouter>
);
});
@@ -33,13 +36,15 @@ describe("LoginForm", () => {
it("renders with single restricted homeserver", () => {
render(
<AppContext.Provider
value={{ restrictBaseUrl: "https://matrix.example.com", asManagedUsers: [], menu: [] }}
>
<BrowserRouter>
<AppContext.Provider
value={{ restrictBaseUrl: "https://matrix.example.com", asManagedUsers: [], menu: [] }}
>
<AdminContext i18nProvider={i18nProvider}>
<LoginPage />
</AdminContext>
</AppContext.Provider>
</AdminContext>
</AppContext.Provider>
</BrowserRouter>
);
screen.getByText(englishMessages.synapseadmin.auth.welcome);
@@ -56,14 +61,16 @@ describe("LoginForm", () => {
it("renders with multiple restricted homeservers", async () => {
render(
<AppContext.Provider
value={{
restrictBaseUrl: ["https://matrix.example.com", "https://matrix.example.org"],
asManagedUsers: [],
value={{
restrictBaseUrl: ["https://matrix.example.com", "https://matrix.example.org"],
asManagedUsers: [],
menu: [],
}}
>
<AdminContext i18nProvider={i18nProvider}>
<LoginPage />
<BrowserRouter>
<LoginPage />
</BrowserRouter>
</AdminContext>
</AppContext.Provider>
);

3118
yarn.lock

File diff suppressed because it is too large Load Diff