diff --git a/src/register/RegistrationPage.test.jsx b/src/register/RegistrationPage.test.jsx
index 1918b6ac..20b5a969 100644
--- a/src/register/RegistrationPage.test.jsx
+++ b/src/register/RegistrationPage.test.jsx
@@ -200,7 +200,7 @@ describe('RegistrationPage', () => {
const button = container.querySelector('button.btn-brand');
fireEvent.click(button);
- expect(store.dispatch).toHaveBeenCalledWith(registerNewUser({ ...payload, country: 'PK' }));
+ waitFor(() => { expect(store.dispatch).toHaveBeenCalledWith(registerNewUser({ ...payload, country: 'PK' })); });
});
it('should submit form without password field when current provider is present', () => {
@@ -233,7 +233,7 @@ describe('RegistrationPage', () => {
populateRequiredFields(getByLabelText, formPayload, true);
const button = container.querySelector('button.btn-brand');
fireEvent.click(button);
- expect(store.dispatch).toHaveBeenCalledWith(registerNewUser({ ...formPayload, country: 'PK' }));
+ waitFor(() => { expect(store.dispatch).toHaveBeenCalledWith(registerNewUser({ ...formPayload, country: 'PK' })); });
});
it('should display an error when form is submitted with an invalid email', () => {
@@ -308,7 +308,7 @@ describe('RegistrationPage', () => {
populateRequiredFields(getByLabelText, payload);
const button = container.querySelector('button.btn-brand');
fireEvent.click(button);
- expect(store.dispatch).toHaveBeenCalledWith(registerNewUser({ ...payload, country: 'PK' }));
+ waitFor(() => { expect(store.dispatch).toHaveBeenCalledWith(registerNewUser({ ...payload, country: 'PK' })); });
mergeConfig({
MARKETING_EMAILS_OPT_IN: '',
@@ -335,7 +335,7 @@ describe('RegistrationPage', () => {
populateRequiredFields(getByLabelText, payload, false, true);
const button = container.querySelector('button.btn-brand');
fireEvent.click(button);
- expect(store.dispatch).toHaveBeenCalledWith(registerNewUser({ ...payload, country: 'PK' }));
+ waitFor(() => { expect(store.dispatch).toHaveBeenCalledWith(registerNewUser({ ...payload, country: 'PK' })); });
mergeConfig({
ENABLE_AUTO_GENERATED_USERNAME: false,
});
@@ -890,15 +890,16 @@ describe('RegistrationPage', () => {
store.dispatch = jest.fn(store.dispatch);
render(routerWrapper(reduxWrapper()));
- expect(store.dispatch).toHaveBeenCalledWith(registerNewUser({
- name: 'John Doe',
- username: 'john_doe',
- email: 'john.doe@example.com',
- country: 'PK',
- social_auth_provider: 'Apple',
- total_registration_time: 0,
- app_name: APP_NAME,
- }));
+ waitFor(() => {
+ expect(store.dispatch).toHaveBeenCalledWith(registerNewUser({
+ name: 'John Doe',
+ username: 'john_doe',
+ email: 'john.doe@example.com',
+ country: 'PK',
+ social_auth_provider: 'Apple',
+ total_registration_time: 0,
+ }));
+ });
});
});
});
diff --git a/src/register/components/tests/ConfigurableRegistrationForm.test.jsx b/src/register/components/tests/ConfigurableRegistrationForm.test.jsx
index 38e692e3..aebaa596 100644
--- a/src/register/components/tests/ConfigurableRegistrationForm.test.jsx
+++ b/src/register/components/tests/ConfigurableRegistrationForm.test.jsx
@@ -4,7 +4,8 @@ import { mergeConfig } from '@edx/frontend-platform';
import {
getLocale, IntlProvider,
} from '@edx/frontend-platform/i18n';
-import { fireEvent, render } from '@testing-library/react';
+import { fireEvent, render, waitFor } from '@testing-library/react';
+import { useGoogleReCaptcha } from 'react-google-recaptcha-v3';
import { BrowserRouter as Router } from 'react-router-dom';
import configureStore from 'redux-mock-store';
@@ -26,6 +27,11 @@ jest.mock('@edx/frontend-platform/i18n', () => ({
getLocale: jest.fn(),
}));
jest.mock('../../data/optimizelyExperiment/useAutoGeneratedUsernameExperimentVariation', () => jest.fn());
+jest.mock('react-google-recaptcha-v3', () => ({
+ useGoogleReCaptcha: jest.fn(),
+ // eslint-disable-next-line react/prop-types
+ GoogleReCaptchaProvider: ({ children }) =>
{children}
,
+}));
const mockStore = configureStore();
@@ -220,6 +226,8 @@ describe('ConfigurableRegistrationForm', () => {
},
},
});
+ const mockExecuteRecaptchaNew = jest.fn(() => Promise.resolve('mock-token'));
+ useGoogleReCaptcha.mockReturnValue({ executeRecaptcha: mockExecuteRecaptchaNew });
render(routerWrapper(reduxWrapper()));
expect(document.querySelector('#profession')).toBeTruthy();
expect(document.querySelector('#tos')).toBeTruthy();
@@ -230,6 +238,8 @@ describe('ConfigurableRegistrationForm', () => {
SHOW_CONFIGURABLE_EDX_FIELDS: true,
});
getLocale.mockImplementation(() => ('en-us'));
+ const mockExecuteRecaptchaNew = jest.fn(() => Promise.resolve('mock-token'));
+ useGoogleReCaptcha.mockReturnValue({ executeRecaptcha: mockExecuteRecaptchaNew });
jest.spyOn(global.Date, 'now').mockImplementation(() => 0);
store = mockStore({
...initialState,
@@ -265,7 +275,9 @@ describe('ConfigurableRegistrationForm', () => {
fireEvent.click(submitButton);
- expect(store.dispatch).toHaveBeenCalledWith(registerNewUser({ ...payload, country: 'PK', app_name: APP_NAME }));
+ waitFor(() => {
+ expect(store.dispatch).toHaveBeenCalledWith(registerNewUser({ ...payload, country: 'PK' }));
+ });
});
it('should show error messages for required fields on empty form submission', () => {