From 8ce99ea30d8ed82f400a18ff72da912bb6396688 Mon Sep 17 00:00:00 2001 From: Jeremy Davis Date: Wed, 30 Aug 2023 11:20:49 +0200 Subject: [PATCH] SONAR-20254 Migrate PluginRiskConsent test to RTL --- .../__tests__/PluginRiskConsent-test.tsx | 48 ++++++++++++++----- .../PluginRiskConsent-test.tsx.snap | 43 ----------------- 2 files changed, 37 insertions(+), 54 deletions(-) delete mode 100644 server/sonar-web/src/main/js/app/components/__tests__/__snapshots__/PluginRiskConsent-test.tsx.snap diff --git a/server/sonar-web/src/main/js/app/components/__tests__/PluginRiskConsent-test.tsx b/server/sonar-web/src/main/js/app/components/__tests__/PluginRiskConsent-test.tsx index b451345e101..4d5a81df5a4 100644 --- a/server/sonar-web/src/main/js/app/components/__tests__/PluginRiskConsent-test.tsx +++ b/server/sonar-web/src/main/js/app/components/__tests__/PluginRiskConsent-test.tsx @@ -17,11 +17,12 @@ * along with this program; if not, write to the Free Software Foundation, * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ -import { shallow } from 'enzyme'; +import userEvent from '@testing-library/user-event'; import * as React from 'react'; import { setSimpleSettingValue } from '../../../api/settings'; -import { Button } from '../../../components/controls/buttons'; import { mockLoggedInUser, mockRouter } from '../../../helpers/testMocks'; +import { renderComponent } from '../../../helpers/testReactTestingUtils'; +import { byRole } from '../../../helpers/testSelector'; import { PluginRiskConsent, PluginRiskConsentProps } from '../PluginRiskConsent'; jest.mock('../../../api/settings', () => ({ @@ -35,36 +36,57 @@ jest.mock('react', () => { }; }); +const originalLocation = window.location; + +beforeAll(() => { + let href = ''; + const location = { + ...window.location, + get href() { + return href; + }, + set href(v: string) { + href = v; + }, + }; + Object.defineProperty(window, 'location', { + writable: true, + value: location, + }); +}); + afterAll(() => { jest.clearAllMocks(); -}); -it('should render correctly', () => { - expect(shallowRender()).toMatchSnapshot('default'); + Object.defineProperty(window, 'location', { + writable: true, + value: originalLocation, + }); }); it('should redirect non-admin users', () => { const replace = jest.fn(); - const wrapper = shallowRender({ + renderPluginRiskConsent({ currentUser: mockLoggedInUser(), router: mockRouter({ replace }), }); - expect(wrapper.type()).toBeNull(); expect(replace).toHaveBeenCalled(); }); it('should handle acknowledgement and redirect', async () => { - const wrapper = shallowRender(); + const user = userEvent.setup(); + renderPluginRiskConsent(); - wrapper.find(Button).first().simulate('click'); + await user.click(ui.acknowledgeButton.get()); await new Promise(setImmediate); expect(setSimpleSettingValue).toHaveBeenCalled(); + expect(window.location.href).toBe('/'); }); -function shallowRender(props: Partial = {}) { - return shallow( +function renderPluginRiskConsent(props: Partial = {}) { + return renderComponent( = {}) { /> ); } + +const ui = { + acknowledgeButton: byRole('button', { name: 'plugin_risk_consent.action' }), +}; diff --git a/server/sonar-web/src/main/js/app/components/__tests__/__snapshots__/PluginRiskConsent-test.tsx.snap b/server/sonar-web/src/main/js/app/components/__tests__/__snapshots__/PluginRiskConsent-test.tsx.snap deleted file mode 100644 index ca59e6da243..00000000000 --- a/server/sonar-web/src/main/js/app/components/__tests__/__snapshots__/PluginRiskConsent-test.tsx.snap +++ /dev/null @@ -1,43 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`should render correctly: default 1`] = ` -
- -
-
-

- plugin_risk_consent.title -

-

- plugin_risk_consent.description -

-

- plugin_risk_consent.description2 -

- -
-
-
-`; -- 2.39.5