* 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', () => ({
};
});
+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<PluginRiskConsentProps> = {}) {
- return shallow(
+function renderPluginRiskConsent(props: Partial<PluginRiskConsentProps> = {}) {
+ return renderComponent(
<PluginRiskConsent
currentUser={mockLoggedInUser({ permissions: { global: ['admin'] } })}
router={mockRouter()}
/>
);
}
+
+const ui = {
+ acknowledgeButton: byRole('button', { name: 'plugin_risk_consent.action' }),
+};
+++ /dev/null
-// Jest Snapshot v1, https://goo.gl/fbAQLP
-
-exports[`should render correctly: default 1`] = `
-<div
- className="plugin-risk-consent-page"
->
- <Helmet
- defer={false}
- encodeSpecialCharacters={true}
- prioritizeSeoTags={false}
- title="plugin_risk_consent.page"
- />
- <div
- className="plugin-risk-consent-content boxed-group"
- >
- <div
- className="boxed-group-inner text-center"
- >
- <h1
- className="big-spacer-bottom"
- >
- plugin_risk_consent.title
- </h1>
- <p
- className="big big-spacer-bottom"
- >
- plugin_risk_consent.description
- </p>
- <p
- className="big huge-spacer-bottom"
- >
- plugin_risk_consent.description2
- </p>
- <Button
- className="big-spacer-bottom"
- onClick={[Function]}
- >
- plugin_risk_consent.action
- </Button>
- </div>
- </div>
-</div>
-`;