Skip to content

Commit c8d8100

Browse files
renovate[bot]gjong
andauthored
Update dependency react-router-dom to v7 (#140)
* Update dependency react-router-dom to v7 * Upgrade from react-router-dom to react-router. * Update lock file with latest versions. * Resolve issues with the tests after the react router upgrade. --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Gerben Jongerius <g.jongerius@jong-soft.com>
1 parent d14b05a commit c8d8100

File tree

70 files changed

+343
-166
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

70 files changed

+343
-166
lines changed

package.json

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,20 +17,21 @@
1717
"react-datepicker": "^7.5.0",
1818
"react-dom": "^19.0.0",
1919
"react-hook-form": "^7.53.1",
20-
"react-router-dom": "^6.28.0",
20+
"react-router": "^7.1.1",
2121
"react-scripts": "5.0.1",
2222
"spacetime": "^7.6.2"
2323
},
2424
"devDependencies": {
2525
"@stylistic/eslint-plugin": "^2.3.0",
26-
"@testing-library/dom": "^10.2.0",
27-
"@testing-library/jest-dom": "^6.4.6",
28-
"@testing-library/react": "^16.0.0",
26+
"@testing-library/dom": "^10.4.0",
27+
"@testing-library/jest-dom": "^6.6.3",
28+
"@testing-library/react": "^16.1.0",
2929
"@testing-library/user-event": "^14.5.2",
3030
"@types/jest": "^29.5.14",
31-
"@types/react": "^19.0.0",
31+
"@types/react": "^19.0.2",
3232
"eslint": "^9.14.0",
3333
"jest": "^29.7.0",
34+
"jest-environment-jsdom": "^29.7.0",
3435
"prop-types": "^15.8.1",
3536
"sass": "^1.83.0",
3637
"tailwindcss": "^3.4.14",

src/components/account/liability-row.component.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { mdiDotsVertical, mdiSquareEditOutline, mdiTrashCanOutline } from "@mdi/js";
22
import React, { Attributes } from "react";
3-
import { Link } from "react-router-dom";
3+
import { Link } from "react-router";
44
import ImageAttachment from "../../core/attachment/image-attachment";
55
import AccountRepository from "../../core/repositories/account-repository";
66
import { Account } from "../../types/types";

src/components/account/own-row.component.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { Link } from "react-router-dom";
1+
import { Link } from "react-router";
22
import { mdiDotsVertical, mdiSquareEditOutline, mdiTrashCanOutline } from "@mdi/js";
33
import React from "react";
44
import AccountRepository from "../../core/repositories/account-repository";

src/components/account/reconcile/reconcile-row.component.spec.tsx

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,21 @@
1-
import { render, fireEvent, waitFor, act } from '@testing-library/react';
1+
import {act, fireEvent, render, waitFor} from '@testing-library/react';
22
import React from "react";
33
import ReconcileRowComponent from './reconcile-row.component';
44
import ProcessRepository, {
55
ProcessInstance,
6-
ProcessVariable,
7-
ProcessTask
6+
ProcessTask,
7+
ProcessVariable
88
} from "../../../core/repositories/process.repository";
9-
import { routerWrapped } from "../../../setupTests";
9+
import {BrowserRouter} from "react-router";
1010

1111
jest.mock("../../../core/repositories/process.repository");
1212

1313
function tableWrapped(children: any) {
14-
return routerWrapped(<table>
14+
return <BrowserRouter><table>
1515
<tbody>
16-
{ children }
16+
{children}
1717
</tbody>
18-
</table>)
18+
</table></BrowserRouter>
1919
}
2020

2121
describe('ReconcileRowComponent', () => {
@@ -46,7 +46,7 @@ describe('ReconcileRowComponent', () => {
4646

4747
it('should load process variables on mount', async () => {
4848
jest.spyOn(ProcessRepository, 'variables').mockResolvedValue(Promise.resolve(mockVariables));
49-
render(tableWrapped(<ReconcileRowComponent process={ mockProcess } onRemoved={ mockOnRemoved }/>));
49+
render(tableWrapped(<ReconcileRowComponent process={mockProcess} onRemoved={mockOnRemoved}/>));
5050

5151
await waitFor(() => expect(ProcessRepository.variables).toHaveBeenCalledWith('AccountReconcile', mockProcess.businessKey, mockProcess.id));
5252
});
@@ -56,11 +56,11 @@ describe('ReconcileRowComponent', () => {
5656
jest.spyOn(ProcessRepository, 'completeTask').mockResolvedValue(Promise.resolve());
5757
jest.spyOn(ProcessRepository, 'variables').mockResolvedValue(Promise.resolve(mockVariables));
5858

59-
const { getByTestId } = render(routerWrapped(<ReconcileRowComponent process={ mockProcess }
59+
const { getByTestId } = render(tableWrapped(<ReconcileRowComponent process={ mockProcess }
6060
onRemoved={ mockOnRemoved }/>));
6161
await waitFor(() => expect(ProcessRepository.variables).toHaveBeenCalledWith('AccountReconcile', mockProcess.businessKey, mockProcess.id));
6262

63-
const retryButton = getByTestId(`retry-button-${ mockProcess.id }`);
63+
const retryButton = getByTestId(`retry-button-${mockProcess.id}`);
6464

6565
act(() => {
6666
fireEvent.click(retryButton);
@@ -73,14 +73,14 @@ describe('ReconcileRowComponent', () => {
7373
jest.spyOn(ProcessRepository, 'variables').mockResolvedValue(Promise.resolve(mockVariables));
7474
jest.spyOn(ProcessRepository, 'delete').mockResolvedValue(Promise.resolve());
7575

76-
const { getByTestId } = render(tableWrapped(<ReconcileRowComponent process={ mockProcess }
77-
onRemoved={ mockOnRemoved }/>));
78-
await waitFor(() => expect(getByTestId(`remove-row-${ mockProcess.id }`)).toBeInTheDocument());
76+
const {getByTestId} = render(tableWrapped(<ReconcileRowComponent process={mockProcess}
77+
onRemoved={mockOnRemoved}/>));
78+
await waitFor(() => expect(getByTestId(`remove-row-${mockProcess.id}`)).toBeInTheDocument());
7979

8080
expect(ProcessRepository.delete).not.toHaveBeenCalled();
8181
expect(ProcessRepository.variables).toHaveBeenCalledWith('AccountReconcile', mockProcess.businessKey, mockProcess.id);
8282

83-
const deleteButton = getByTestId(`remove-row-${ mockProcess.id }`);
83+
const deleteButton = getByTestId(`remove-row-${mockProcess.id}`);
8484
act(() => {
8585
fireEvent.click(deleteButton);
8686
});

src/components/account/reconcile/reconcile-start.component.spec.tsx

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
import { fireEvent, render, waitFor } from '@testing-library/react';
22
import ProcessRepository from "../../../core/repositories/process.repository";
33
import NotificationService from "../../../service/notification.service";
4-
import { routerWrapped } from "../../../setupTests";
54
import ReconcilePopup from "./reconcile-start.component";
65
import { Account } from "../../../types/types";
6+
import {BrowserRouter} from "react-router";
77

88
jest.mock("../../../core/repositories/process.repository");
99
jest.mock("../../../core");
@@ -20,8 +20,7 @@ describe('ReconcilePopup', () => {
2020
ProcessRepository.start = jest.fn().mockResolvedValue({});
2121
NotificationService.success = jest.fn();
2222

23-
const { getByTestId } = render(
24-
routerWrapped(<ReconcilePopup account={ mockAccount } afterCreate={ mockAfterCreate }/>));
23+
const { getByTestId } = render(<ReconcilePopup account={ mockAccount } afterCreate={ mockAfterCreate }/>, {wrapper: BrowserRouter});
2524

2625
fireEvent.click(getByTestId(`reconcile-open-button-${ mockAccount.id }`));
2726

src/components/breadcrumb/breadcrumb-item.component.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { Link } from "react-router-dom";
1+
import { Link } from "react-router";
22

33
import Translation from "../localization/translation.component";
44

src/components/contract/contract-table/row.component.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { Contract } from "../../../types/types";
22
import { FC } from "react";
3-
import { NavLink } from "react-router-dom";
3+
import { NavLink } from "react-router";
44
import { Attachment, Resolver } from "../../../core";
55
import { mdiCalendarCheck, mdiDotsVertical, mdiSquareEditOutline, mdiTrashCanOutline } from "@mdi/js";
66
import ContractRepository from "../../../core/repositories/contract-repository";

src/components/contract/upload-dialog.component.spec.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@ import user from '@testing-library/user-event';
22
import axios from "axios";
33
import { fireEvent, render, waitFor } from "@testing-library/react";
44

5-
import { routerWrapped } from "../../setupTests";
65
import UploadContract from "./upload-dialog.component";
6+
import {BrowserRouter} from "react-router";
77

88
describe('upload-contract', () => {
99

@@ -14,7 +14,7 @@ describe('upload-contract', () => {
1414
})
1515

1616
it('open upload contract', async () => {
17-
const { getByTestId } = render(routerWrapped(<UploadContract id={1}/>))
17+
const { getByTestId } = render(<UploadContract id={1}/>, {wrapper: BrowserRouter})
1818
const button = getByTestId('upload-button')
1919

2020
expect(button).toBeInTheDocument()
@@ -27,7 +27,7 @@ describe('upload-contract', () => {
2727
})
2828

2929
it('should upload a contract', async () => {
30-
const { container, getByTestId } = render(routerWrapped(<UploadContract id={1}/>))
30+
const { container, getByTestId } = render(<UploadContract id={1}/>, {wrapper: BrowserRouter})
3131

3232
const openButton = getByTestId('upload-button')
3333
fireEvent.click(openButton)

src/components/form/entity/AccountInput.spec.tsx

Lines changed: 0 additions & 18 deletions
This file was deleted.

src/components/form/entity/AccountTypeInput.spec.js

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,13 @@
11
import { AccountTypeInput } from "./AccountTypeInput";
2-
import { formWrapped } from "../../../setupTests";
32
import { render, waitFor } from "@testing-library/react";
43
import axios from "axios";
4+
import {Form} from "../Form";
5+
6+
const formWrapped = (component) => {
7+
return <Form entity='TestForm' onSubmit={_ => undefined}>
8+
{component}
9+
</Form>
10+
}
511

612
describe('AccountTypeInput', () => {
713

src/components/layout/button/button.component.spec.js

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,35 @@
11
import { fireEvent, render } from '@testing-library/react';
22
import ButtonComponent from './button.component';
3-
import { routerWrapped } from "../../../setupTests";
43
import { mdiAbacus } from "@mdi/js";
4+
import {BrowserRouter} from "react-router";
55

66
describe('Button', () => {
77
const mockNavigate = jest.fn()
88

99
beforeEach(() => {
10-
jest.mock('react-router-dom', () => ({
11-
...jest.requireActual('react-router-dom'),
10+
jest.mock('react-router', () => ({
11+
...jest.requireActual('react-router'),
1212
useNavigate: () => mockNavigate
1313
}))
1414
})
1515

1616
it('renders with default props', () => {
17-
const { getByTestId } = render(routerWrapped(<ButtonComponent dataTestId="button" />));
17+
const { getByTestId } = render(<ButtonComponent dataTestId="button" />, {wrapper: BrowserRouter});
1818
const button = getByTestId('button');
1919
expect(button).toBeInTheDocument();
2020
});
2121

2222
it('calls onClick when clicked', () => {
2323
const handleClick = jest.fn();
24-
const { getByTestId } = render(routerWrapped(<ButtonComponent onClick={ handleClick } dataTestId="button" />));
24+
const { getByTestId } = render(<ButtonComponent onClick={ handleClick } dataTestId="button" />, {wrapper: BrowserRouter});
2525
const button = getByTestId('button');
2626

2727
fireEvent.click(button);
2828
expect(handleClick).toHaveBeenCalled();
2929
});
3030

3131
it('navigates when href is provided and button is clicked', () => {
32-
const { getByTestId } = render(routerWrapped(<ButtonComponent href="/test" dataTestId="button" />));
32+
const { getByTestId } = render(<ButtonComponent href="/test" dataTestId="button" />, {wrapper: BrowserRouter});
3333
const button = getByTestId('button');
3434

3535
fireEvent.click(button);
@@ -38,7 +38,7 @@ describe('Button', () => {
3838

3939
it('does not navigate when onClick is provided', () => {
4040
const handleClick = jest.fn();
41-
const { getByTestId } = render(routerWrapped(<ButtonComponent href="/test" onClick={ handleClick } dataTestId="button" />));
41+
const { getByTestId } = render(<ButtonComponent href="/test" onClick={ handleClick } dataTestId="button" />, {wrapper: BrowserRouter});
4242
const button = getByTestId('button');
4343

4444
fireEvent.click(button);
@@ -47,19 +47,19 @@ describe('Button', () => {
4747
});
4848

4949
it('renders with icon before label when iconPos is before', () => {
50-
const { getByTestId } = render(routerWrapped(<ButtonComponent icon={ mdiAbacus } iconPos="before" dataTestId="button" />));
50+
const { getByTestId } = render(<ButtonComponent icon={ mdiAbacus } iconPos="before" dataTestId="button" />, {wrapper: BrowserRouter});
5151
const button = getByTestId('button');
5252
expect(button.firstChild.nodeName).toBe('svg');
5353
});
5454

5555
it('renders with icon after label when iconPos is after', () => {
56-
const { getByTestId } = render(routerWrapped(<ButtonComponent icon={ mdiAbacus } iconPos="after" dataTestId="button" />));
56+
const { getByTestId } = render(<ButtonComponent icon={ mdiAbacus } iconPos="after" dataTestId="button" />, {wrapper: BrowserRouter});
5757
const button = getByTestId('button');
5858
expect(button.lastChild.nodeName).toBe('svg');
5959
});
6060

6161
it('renders with disabled attribute when disabled prop is true', () => {
62-
const { getByTestId } = render(routerWrapped(<ButtonComponent disabled={true} dataTestId="button" />));
62+
const { getByTestId } = render(<ButtonComponent disabled={true} dataTestId="button" />, {wrapper: BrowserRouter});
6363
const button = getByTestId('button');
6464

6565
expect(button).toBeDisabled();

src/components/layout/button/button.component.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
import { useNavigate } from "react-router-dom";
21
import Icon from "@mdi/react";
32
import React, { Attributes, FC } from "react";
43

54
import Translation from "../../localization/translation.component";
65
import { StyleVariant } from "../../../types/types";
6+
import { useNavigate } from "react-router";
77

88
const specialVariant = ['icon', 'text']
99
type SpecializedVariant = (typeof specialVariant)[number]

src/components/layout/button/history-button.component.spec.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,22 @@
11
import HistoryButtonComponent from "./history-button.component"
22
import { fireEvent, render } from "@testing-library/react";
3-
import { routerWrapped } from "../../../setupTests";
43
import { mdiAccount } from "@mdi/js";
4+
import {BrowserRouter} from "react-router";
55

66
describe(HistoryButtonComponent, () => {
77

88
const mockNavigate = jest.fn()
99

1010
beforeEach(() => {
11-
jest.mock('react-router-dom', () => ({
12-
...jest.requireActual('react-router-dom'),
11+
jest.mock('react-router', () => ({
12+
...jest.requireActual('react-router'),
1313
useNavigate: () => mockNavigate
1414
}))
1515
})
1616

1717
it("click on the back button", () => {
1818
const { getByRole } = render(
19-
routerWrapped(<HistoryButtonComponent label='common.test' icon={mdiAccount}/>))
19+
<HistoryButtonComponent label='common.test' icon={mdiAccount}/>, {wrapper: BrowserRouter})
2020
const button = getByRole('button')
2121

2222
expect(button).toBeInTheDocument()

src/components/layout/button/history-button.component.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { useNavigate } from "react-router-dom";
1+
import { useNavigate } from "react-router";
22
import React, { Attributes, FC } from "react";
33
import ButtonComponent from "./button.component";
44

src/components/layout/card.component.spec.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import Card from "./card.component";
22
import {render} from "@testing-library/react";
33
import {Button} from "./button";
4-
import {routerWrapped} from "../../setupTests";
54
import {mdiAccount} from "@mdi/js";
5+
import {BrowserRouter} from "react-router";
66

77
describe('Card', () => {
88
let button = <Button label='test.button' icon={mdiAccount} key='button'/>
@@ -18,7 +18,7 @@ describe('Card', () => {
1818
})
1919

2020
it("A card with actions should have a header", () => {
21-
const { container } = render(routerWrapped(<Card actions={[button]}><div/></Card>))
21+
const { container } = render(<Card actions={[button]}><div/></Card>, {wrapper: BrowserRouter})
2222

2323
const header = container.querySelector('header')
2424
expect(header).toBeInTheDocument()
@@ -28,7 +28,7 @@ describe('Card', () => {
2828
})
2929

3030
it("A card with buttons should have a footer", () => {
31-
const { container } = render(routerWrapped(<Card buttons={[button]}><div/></Card>))
31+
const { container } = render(<Card buttons={[button]}><div/></Card>, {wrapper: BrowserRouter})
3232

3333
const footer = container.querySelector('footer')
3434
expect(footer).toBeInTheDocument()

src/components/layout/paginator.component.spec.js

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
import { render } from "@testing-library/react";
22
import { Paginator } from "./paginator.component";
33
import { routerWrapped } from "../../setupTests";
4+
import {BrowserRouter} from "react-router";
45

56
describe('Paginator', () => {
67

78
it("Paginator should have the correct number of pages", () => {
8-
const { getByTestId, getAllByRole } = render(routerWrapped(<Paginator page={2} pageSize={10} records={100} />))
9+
const { getByTestId, getAllByRole } = render(<Paginator page={2} pageSize={10} records={100} />, {wrapper: BrowserRouter})
910

1011
const previous = getByTestId('previous-button')
1112
const next = getByTestId('next-button')
@@ -19,13 +20,13 @@ describe('Paginator', () => {
1920
})
2021

2122
it("Paginator last page disabled", () => {
22-
const { getByTestId } = render(routerWrapped(<Paginator page={10} pageSize={10} records={100} />))
23+
const { getByTestId } = render(<Paginator page={10} pageSize={10} records={100} />, {wrapper: BrowserRouter})
2324
const next = getByTestId('next-button')
2425
expect(next).toHaveClass('pointer-events-none')
2526
})
2627

2728
it("Paginator first page disabled", () => {
28-
const { getByTestId } = render(routerWrapped(<Paginator page={0} pageSize={10} records={100} />))
29+
const { getByTestId } = render(<Paginator page={0} pageSize={10} records={100} />, {wrapper: BrowserRouter})
2930

3031
const previous = getByTestId('previous-button')
3132
expect(previous).toHaveClass('pointer-events-none')

src/components/layout/paginator.component.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import React, { FC } from "react";
22
import { mdiChevronLeft, mdiChevronRight } from "@mdi/js";
33
import Icon from "@mdi/react";
4-
import { Link } from "react-router-dom";
4+
import { Link } from "react-router";
55

66
type PageButtonProp = {
77
page: number,

0 commit comments

Comments
 (0)