|
1 | 1 | import { screen, render } from '@testing-library/react'; |
2 | 2 | import { useSelector } from 'react-redux'; |
3 | | -import { useNavigate } from 'react-router-dom'; |
4 | 3 | import { IntlProvider } from '@edx/frontend-platform/i18n'; |
5 | 4 | import PageSettingButton from './PageSettingButton'; |
6 | 5 |
|
@@ -44,62 +43,51 @@ const renderComponent = (props = {}) => render( |
44 | 43 | ); |
45 | 44 |
|
46 | 45 | describe('PageSettingButton', () => { |
47 | | - const navigate = jest.fn(); |
48 | | - |
49 | 46 | beforeEach(() => { |
50 | 47 | useSelector.mockClear(); |
51 | | - useNavigate.mockReturnValue(navigate); |
52 | 48 | }); |
53 | 49 |
|
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', () => { |
55 | 51 | useSelector.mockReturnValue(mockWaffleFlags); |
56 | 52 |
|
57 | 53 | renderComponent({ legacyLink: 'http://legacylink.com/textbooks' }); |
58 | 54 |
|
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`); |
63 | 57 | }); |
64 | 58 |
|
65 | | - it('does not render button when legacyLink prop value incorrect', () => { |
| 59 | + it('does not render link when legacyLink prop value incorrect', () => { |
66 | 60 | useSelector.mockReturnValue(mockWaffleFlags); |
67 | 61 |
|
68 | 62 | renderComponent({ legacyLink: 'http://legacylink.com/some-value' }); |
69 | 63 |
|
70 | | - expect(screen.queryByRole('IconButton', { name: /settings/i })).toBeNull(); |
| 64 | + expect(screen.queryByRole('link')).toBeNull(); |
71 | 65 | }); |
72 | 66 |
|
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', () => { |
74 | 68 | useSelector.mockReturnValue({ ...mockWaffleFlags, useNewTextbooksPage: false }); |
75 | 69 |
|
76 | 70 | renderComponent({ legacyLink: 'http://legacylink.com/textbooks' }); |
77 | 71 |
|
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'); |
82 | 74 | }); |
83 | 75 |
|
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', () => { |
85 | 77 | useSelector.mockReturnValue(mockWaffleFlags); |
86 | 78 |
|
87 | 79 | renderComponent(); |
88 | 80 |
|
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`); |
93 | 83 | }); |
94 | 84 |
|
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', () => { |
96 | 86 | useSelector.mockReturnValue({ ...mockWaffleFlags, useNewCustomPages: false }); |
97 | 87 |
|
98 | 88 | renderComponent(); |
99 | 89 |
|
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); |
104 | 92 | }); |
105 | 93 | }); |
0 commit comments