From d427067f57fee650a433053b2cbcdf51887a66a8 Mon Sep 17 00:00:00 2001 From: sundasnoreen12 Date: Mon, 1 Sep 2025 13:44:35 +0500 Subject: [PATCH] test: fixed test cases --- src/register/RegistrationPage.test.jsx | 27 ++++++++++--------- .../ConfigurableRegistrationForm.test.jsx | 16 +++++++++-- 2 files changed, 28 insertions(+), 15 deletions(-) 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', () => {