Skip to content

Commit ac127e2

Browse files
rayzhou-bitFaraz32123
authored andcommitted
Revert "fix: use navigate instead of Link from react-dom"
This reverts commit 06bdff1.
1 parent 06bdff1 commit ac127e2

File tree

2 files changed

+23
-34
lines changed

2 files changed

+23
-34
lines changed

src/pages-and-resources/pages/PageSettingButton.jsx

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import { useSelector } from 'react-redux';
55
import { useIntl } from '@edx/frontend-platform/i18n';
66
import { Icon, IconButton } from '@openedx/paragon';
77
import { ArrowForward, Settings } from '@openedx/paragon/icons';
8-
import { useNavigate } from 'react-router-dom';
8+
import { useNavigate, Link } from 'react-router-dom';
99

1010
import { getWaffleFlags } from '../../data/selectors';
1111
import messages from '../messages';
@@ -44,13 +44,14 @@ const PageSettingButton = ({
4444

4545
if (determineLinkDestination) {
4646
return (
47-
<IconButton
48-
src={ArrowForward}
49-
iconAs={Icon}
50-
size="inline"
51-
alt={formatMessage(messages.settings)}
52-
onClick={() => navigate(determineLinkDestination)}
53-
/>
47+
<Link to={determineLinkDestination}>
48+
<IconButton
49+
src={ArrowForward}
50+
iconAs={Icon}
51+
size="inline"
52+
alt={formatMessage(messages.settings)}
53+
/>
54+
</Link>
5455
);
5556
}
5657

src/pages-and-resources/pages/PageSettingButton.test.jsx

Lines changed: 14 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import { screen, render } from '@testing-library/react';
22
import { useSelector } from 'react-redux';
3-
import { useNavigate } from 'react-router-dom';
43
import { IntlProvider } from '@edx/frontend-platform/i18n';
54
import PageSettingButton from './PageSettingButton';
65

@@ -44,62 +43,51 @@ const renderComponent = (props = {}) => render(
4443
);
4544

4645
describe('PageSettingButton', () => {
47-
const navigate = jest.fn();
48-
4946
beforeEach(() => {
5047
useSelector.mockClear();
51-
useNavigate.mockReturnValue(navigate);
5248
});
5349

54-
it('navigates to the new textbooks page link when useNewTextbooksPage is true', () => {
50+
it('renders the settings button with the new textbooks page link when useNewTextbooksPage is true', () => {
5551
useSelector.mockReturnValue(mockWaffleFlags);
5652

5753
renderComponent({ legacyLink: 'http://legacylink.com/textbooks' });
5854

59-
const buttonElement = screen.getByRole('button', { name: /settings/i });
60-
buttonElement.click();
61-
62-
expect(navigate).toHaveBeenCalledWith(`/course/${defaultProps.courseId}/page-id`);
55+
const linkElement = screen.getByRole('link');
56+
expect(linkElement).toHaveAttribute('href', `/course/${defaultProps.courseId}/page-id`);
6357
});
6458

65-
it('does not render button when legacyLink prop value incorrect', () => {
59+
it('does not render link when legacyLink prop value incorrect', () => {
6660
useSelector.mockReturnValue(mockWaffleFlags);
6761

6862
renderComponent({ legacyLink: 'http://legacylink.com/some-value' });
6963

70-
expect(screen.queryByRole('IconButton', { name: /settings/i })).toBeNull();
64+
expect(screen.queryByRole('link')).toBeNull();
7165
});
7266

73-
it('navigates to the legacy link when useNewTextbooksPage is false', () => {
67+
it('renders the settings button with the legacy link when useNewTextbooksPage is false', () => {
7468
useSelector.mockReturnValue({ ...mockWaffleFlags, useNewTextbooksPage: false });
7569

7670
renderComponent({ legacyLink: 'http://legacylink.com/textbooks' });
7771

78-
const buttonElement = screen.getByRole('button', { name: /settings/i });
79-
buttonElement.click();
80-
81-
expect(navigate).toHaveBeenCalledWith('http://legacylink.com/textbooks');
72+
const linkElement = screen.getByRole('link');
73+
expect(linkElement).toHaveAttribute('href', 'http://legacylink.com/textbooks');
8274
});
8375

84-
it('navigates to the new custom pages link when useNewCustomPages is true', () => {
76+
it('renders the settings button with the new custom pages link when useNewCustomPages is true', () => {
8577
useSelector.mockReturnValue(mockWaffleFlags);
8678

8779
renderComponent();
8880

89-
const buttonElement = screen.getByRole('button', { name: /settings/i });
90-
buttonElement.click();
91-
92-
expect(navigate).toHaveBeenCalledWith(`/course/${defaultProps.courseId}/page-id`);
81+
const linkElement = screen.getByRole('link');
82+
expect(linkElement).toHaveAttribute('href', `/course/${defaultProps.courseId}/page-id`);
9383
});
9484

95-
it('navigates to the legacy link when useNewCustomPages is false', () => {
85+
it('renders the settings button with the legacy link when useNewCustomPages is false', () => {
9686
useSelector.mockReturnValue({ ...mockWaffleFlags, useNewCustomPages: false });
9787

9888
renderComponent();
9989

100-
const buttonElement = screen.getByRole('button', { name: /settings/i });
101-
buttonElement.click();
102-
103-
expect(navigate).toHaveBeenCalledWith(defaultProps.legacyLink);
90+
const linkElement = screen.getByRole('link');
91+
expect(linkElement).toHaveAttribute('href', defaultProps.legacyLink);
10492
});
10593
});

0 commit comments

Comments
 (0)