diff --git a/__snapshots__/features/identityCheck/pages/profile/SetAddress.web.test.tsx.web-snap b/__snapshots__/features/identityCheck/pages/profile/SetAddress.web.test.tsx.web-snap index fab8000a348..49ada6533c3 100644 --- a/__snapshots__/features/identityCheck/pages/profile/SetAddress.web.test.tsx.web-snap +++ b/__snapshots__/features/identityCheck/pages/profile/SetAddress.web.test.tsx.web-snap @@ -239,7 +239,7 @@ exports[` should render correctly 1`] = ` class="css-text-1rynq56 r-color-1rmcaf9 r-fontFamily-g6644c r-fontSize-cygvgh r-lineHeight-u6qrkm" dir="ltr" > - Entre ton adresse + Recherche et sélectionne ton adresse diff --git a/src/App.tsx b/src/App.tsx index ff8c4f2e62c..e9cdbdb580e 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -15,7 +15,6 @@ if (process.env.NODE_ENV === 'development') { import { AccessibilityFiltersWrapper } from 'features/accessibility/context/AccessibilityFiltersWrapper' import { AuthWrapper } from 'features/auth/context/AuthWrapper' -import { SettingsWrapper } from 'features/auth/context/SettingsContext' import { CulturalSurveyContextProvider } from 'features/culturalSurvey/context/CulturalSurveyContextProvider' import { AsyncErrorBoundaryWithoutNavigation } from 'features/errors/pages/AsyncErrorBoundary' import { ScreenErrorProvider } from 'features/errors/pages/ScreenErrorProvider' @@ -91,39 +90,37 @@ const App: FunctionComponent = function () { {/* All react-query calls should be nested inside NetInfoWrapper to ensure the user has internet connection */} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/App.web.tsx b/src/App.web.tsx index 6f9bd7222c4..64de158ce5b 100644 --- a/src/App.web.tsx +++ b/src/App.web.tsx @@ -9,7 +9,6 @@ import { ErrorBoundary } from 'react-error-boundary' import { AccessibilityFiltersWrapper } from 'features/accessibility/context/AccessibilityFiltersWrapper' import { AuthWrapper } from 'features/auth/context/AuthWrapper' -import { SettingsWrapper } from 'features/auth/context/SettingsContext' import { CulturalSurveyContextProvider } from 'features/culturalSurvey/context/CulturalSurveyContextProvider' import { AsyncErrorBoundaryWithoutNavigation } from 'features/errors/pages/AsyncErrorBoundary' import { ScreenErrorProvider } from 'features/errors/pages/ScreenErrorProvider' @@ -62,38 +61,36 @@ export function App() { - - - - - - - - - - - - - - - - }> - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + }> + + + + + + + + + + + + + + + diff --git a/src/features/auth/context/SettingsContext.tsx b/src/features/auth/context/SettingsContext.tsx deleted file mode 100644 index 5216e031d7b..00000000000 --- a/src/features/auth/context/SettingsContext.tsx +++ /dev/null @@ -1,44 +0,0 @@ -import React, { memo, useContext, useMemo } from 'react' -import { useQuery, UseQueryResult } from 'react-query' - -import { api } from 'api/api' -import { SettingsResponse } from 'api/gen' -import { useNetInfoContext } from 'libs/network/NetInfoWrapper' -import { QueryKeys } from 'libs/queryKeys' - -export interface ISettingsContext { - data: UseQueryResult['data'] - isLoading: UseQueryResult['isLoading'] -} - -const SettingsContext = React.createContext({ - data: undefined, - isLoading: false, -}) - -export function useSettingsContext(): ISettingsContext { - return useContext(SettingsContext) -} - -export const SettingsWrapper = memo(function SettingsWrapper({ - children, -}: { - children: React.JSX.Element -}) { - const { data, isLoading } = useAppSettings() - - const value = useMemo(() => ({ data, isLoading }), [data, isLoading]) - - return {children} -}) - -// arbitrary. Should not change that often though -const STALE_TIME_APP_SETTINGS = 5 * 60 * 1000 - -function useAppSettings() { - const netInfo = useNetInfoContext() - return useQuery([QueryKeys.SETTINGS], () => api.getNativeV1Settings(), { - enabled: !!netInfo.isConnected && !!netInfo.isInternetReachable, - staleTime: STALE_TIME_APP_SETTINGS, - }) -} diff --git a/src/features/auth/context/__mocks__/SettingsContext.tsx b/src/features/auth/context/__mocks__/SettingsContext.tsx deleted file mode 100644 index 018f8cc5b2c..00000000000 --- a/src/features/auth/context/__mocks__/SettingsContext.tsx +++ /dev/null @@ -1,8 +0,0 @@ -import { defaultSettings } from 'features/auth/fixtures/fixtures' - -import { useSettingsContext as actualUseSettingsContext } from '../SettingsContext' - -export const useSettingsContext = jest.fn().mockReturnValue({ - data: defaultSettings, - isLoading: false, -}) as jest.MockedFunction diff --git a/src/features/auth/context/__mocks__/useSettings.ts b/src/features/auth/context/__mocks__/useSettings.ts new file mode 100644 index 00000000000..885e7bfcb6a --- /dev/null +++ b/src/features/auth/context/__mocks__/useSettings.ts @@ -0,0 +1,6 @@ +import { defaultSettings } from 'features/auth/fixtures/fixtures' + +export const useSettings = jest.fn().mockReturnValue({ + data: defaultSettings, + isLoading: false, +}) diff --git a/src/features/auth/context/useSettings.ts b/src/features/auth/context/useSettings.ts new file mode 100644 index 00000000000..e9ce98112af --- /dev/null +++ b/src/features/auth/context/useSettings.ts @@ -0,0 +1,20 @@ +import { useQuery } from 'react-query' + +import { api } from 'api/api' +import { SettingsResponse } from 'api/gen' +import { QueryKeys } from 'libs/queryKeys' + +// arbitrary. Should not change that often though +const STALE_TIME_APP_SETTINGS = 5 * 60 * 1000 + +export const useSettings = () => { + const { data, isLoading } = useQuery( + [QueryKeys.SETTINGS], + () => api.getNativeV1Settings(), + { + staleTime: STALE_TIME_APP_SETTINGS, + } + ) + + return { data, isLoading } +} diff --git a/src/features/auth/pages/forgottenPassword/ForgottenPassword/ForgottenPassword.native.test.tsx b/src/features/auth/pages/forgottenPassword/ForgottenPassword/ForgottenPassword.native.test.tsx index de15850ebce..68a90320309 100644 --- a/src/features/auth/pages/forgottenPassword/ForgottenPassword/ForgottenPassword.native.test.tsx +++ b/src/features/auth/pages/forgottenPassword/ForgottenPassword/ForgottenPassword.native.test.tsx @@ -1,12 +1,12 @@ import React from 'react' import { navigate, replace } from '__mocks__/@react-navigation/native' -import { setSettings } from 'features/auth/tests/setSettings' import { StepperOrigin } from 'features/navigation/RootNavigator/types' import { captureMonitoringError } from 'libs/monitoring/errors' import { eventMonitoring } from 'libs/monitoring/services' import { useNetInfoContext as useNetInfoContextDefault } from 'libs/network/NetInfoWrapper' import { NetworkErrorFixture, UnknownErrorFixture } from 'libs/recaptcha/fixtures' +import { mockSettings } from 'tests/mockSettings' import { mockServer } from 'tests/mswServer' import { reactQueryProviderHOC } from 'tests/reactQueryProviderHOC' import { act, fireEvent, render, screen, simulateWebviewMessage, waitFor } from 'tests/utils' @@ -38,7 +38,7 @@ jest.mock('react-native/Libraries/Animated/createAnimatedComponent', () => { describe('', () => { beforeEach(() => { - setSettings() + mockSettings() }) it('should match snapshot', () => { diff --git a/src/features/auth/pages/forgottenPassword/ForgottenPassword/ForgottenPassword.tsx b/src/features/auth/pages/forgottenPassword/ForgottenPassword/ForgottenPassword.tsx index c237b0bcd59..69bf6744000 100644 --- a/src/features/auth/pages/forgottenPassword/ForgottenPassword/ForgottenPassword.tsx +++ b/src/features/auth/pages/forgottenPassword/ForgottenPassword/ForgottenPassword.tsx @@ -7,7 +7,7 @@ import { api } from 'api/api' import { ApiError } from 'api/ApiError' import { isAPIExceptionCapturedAsInfo } from 'api/apiHelpers' import { SettingsResponse } from 'api/gen' -import { useSettingsContext } from 'features/auth/context/SettingsContext' +import { useSettings } from 'features/auth/context/useSettings' import { StepperOrigin, UseNavigationType } from 'features/navigation/RootNavigator/types' import { captureMonitoringError } from 'libs/monitoring/errors' import { useNetInfoContext } from 'libs/network/NetInfoWrapper' @@ -31,7 +31,7 @@ type FormValues = { } export const ForgottenPassword = () => { - const { data: settings, isLoading: areSettingsLoading } = useSettingsContext() + const { data: settings, isLoading: areSettingsLoading } = useSettings() const { control, diff --git a/src/features/auth/pages/forgottenPassword/ForgottenPassword/ForgottenPassword.web.test.tsx b/src/features/auth/pages/forgottenPassword/ForgottenPassword/ForgottenPassword.web.test.tsx index b9d416865f9..3804a452d12 100644 --- a/src/features/auth/pages/forgottenPassword/ForgottenPassword/ForgottenPassword.web.test.tsx +++ b/src/features/auth/pages/forgottenPassword/ForgottenPassword/ForgottenPassword.web.test.tsx @@ -1,6 +1,7 @@ import React from 'react' import { SafeAreaProvider } from 'react-native-safe-area-context' +import { mockSettings } from 'tests/mockSettings' import { render, checkAccessibilityFor, screen, waitFor } from 'tests/utils/web' import { ForgottenPassword } from './ForgottenPassword' @@ -13,6 +14,7 @@ jest.mock('uuid', () => { v4: jest.fn(() => value++), } }) +mockSettings() describe('', () => { describe('Accessibility', () => { diff --git a/src/features/auth/pages/login/Login.native.test.tsx b/src/features/auth/pages/login/Login.native.test.tsx index 9c124c2f2ed..08747bb6074 100644 --- a/src/features/auth/pages/login/Login.native.test.tsx +++ b/src/features/auth/pages/login/Login.native.test.tsx @@ -13,7 +13,6 @@ import { UserProfileResponse, } from 'api/gen' import { AuthContext } from 'features/auth/context/AuthContext' -import { setSettings } from 'features/auth/tests/setSettings' import { SignInResponseFailure } from 'features/auth/types' import { favoriteOfferResponseSnap } from 'features/favorites/fixtures/favoriteOfferResponseSnap' import { favoriteResponseSnap } from 'features/favorites/fixtures/favoriteResponseSnap' @@ -30,6 +29,7 @@ import { RemoteStoreFeatureFlags } from 'libs/firebase/firestore/types' import * as monitoringErrorsModule from 'libs/monitoring/errors' import { NetworkErrorFixture, UnknownErrorFixture } from 'libs/recaptcha/fixtures' import { storage } from 'libs/storage' +import { mockSettings } from 'tests/mockSettings' import { mockServer } from 'tests/mswServer' import { reactQueryProviderHOC } from 'tests/reactQueryProviderHOC' import { act, fireEvent, render, screen, simulateWebviewMessage } from 'tests/utils' @@ -85,6 +85,8 @@ jest.mock('react-native/Libraries/Animated/createAnimatedComponent', () => { } }) +mockSettings({ isRecaptchaEnabled: false }) + describe('', () => { beforeEach(() => { setFeatureFlags([RemoteStoreFeatureFlags.WIP_ENABLE_GOOGLE_SSO]) @@ -644,7 +646,11 @@ describe('', () => { describe('Login with ReCatpcha', () => { beforeAll(() => { - setSettings() + mockSettings({ isRecaptchaEnabled: true }) + }) + + afterAll(() => { + mockSettings({ isRecaptchaEnabled: false }) }) it('should not open reCAPTCHA challenge modal before clicking on login button', async () => { diff --git a/src/features/auth/pages/login/Login.tsx b/src/features/auth/pages/login/Login.tsx index 3d3efa405d7..c409058b170 100644 --- a/src/features/auth/pages/login/Login.tsx +++ b/src/features/auth/pages/login/Login.tsx @@ -8,7 +8,7 @@ import styled from 'styled-components/native' import { useSignIn } from 'features/auth/api/useSignIn' import { AuthenticationButton } from 'features/auth/components/AuthenticationButton/AuthenticationButton' import { SSOButtonBase } from 'features/auth/components/SSOButton/SSOButtonBase' -import { useSettingsContext } from 'features/auth/context/SettingsContext' +import { useSettings } from 'features/auth/context/useSettings' import { loginSchema } from 'features/auth/pages/login/schema/loginSchema' import { SignInResponseFailure } from 'features/auth/types' import { @@ -48,7 +48,7 @@ type Props = { export const Login: FunctionComponent = memo(function Login(props) { const enableGoogleSSO = useFeatureFlag(RemoteStoreFeatureFlags.WIP_ENABLE_GOOGLE_SSO) - const { data: settings } = useSettingsContext() + const { data: settings } = useSettings() const { params } = useRoute>() const { navigate } = useNavigation() const { showInfoSnackBar, showErrorSnackBar } = useSnackBarContext() diff --git a/src/features/auth/pages/signup/AcceptCgu/AcceptCgu.native.test.tsx b/src/features/auth/pages/signup/AcceptCgu/AcceptCgu.native.test.tsx index 6f568e40223..c49d81e1da3 100644 --- a/src/features/auth/pages/signup/AcceptCgu/AcceptCgu.native.test.tsx +++ b/src/features/auth/pages/signup/AcceptCgu/AcceptCgu.native.test.tsx @@ -2,12 +2,12 @@ import React from 'react' import { Linking } from 'react-native' import { navigate } from '__mocks__/@react-navigation/native' -import { setSettings } from 'features/auth/tests/setSettings' import { analytics } from 'libs/analytics/provider' import { env } from 'libs/environment/env' import { useNetInfoContext as useNetInfoContextDefault } from 'libs/network/NetInfoWrapper' import { UnknownErrorFixture } from 'libs/recaptcha/fixtures' import { mockAuthContextWithoutUser } from 'tests/AuthContextUtils' +import { mockSettings } from 'tests/mockSettings' import { reactQueryProviderHOC } from 'tests/reactQueryProviderHOC' import { act, fireEvent, render, screen, simulateWebviewMessage, waitFor } from 'tests/utils' @@ -50,7 +50,7 @@ jest.mock('react-native/Libraries/Animated/createAnimatedComponent', () => { describe('', () => { beforeEach(() => { - setSettings() + mockSettings() }) it('should render correctly', () => { diff --git a/src/features/auth/pages/signup/AcceptCgu/AcceptCgu.tsx b/src/features/auth/pages/signup/AcceptCgu/AcceptCgu.tsx index 69e413f425e..78f210c001d 100644 --- a/src/features/auth/pages/signup/AcceptCgu/AcceptCgu.tsx +++ b/src/features/auth/pages/signup/AcceptCgu/AcceptCgu.tsx @@ -5,7 +5,7 @@ import { Text } from 'react-native' import styled from 'styled-components/native' import { v4 as uuidv4 } from 'uuid' -import { useSettingsContext } from 'features/auth/context/SettingsContext' +import { useSettings } from 'features/auth/context/useSettings' import { useSignupRecaptcha } from 'features/auth/helpers/useSignupRecaptcha' import { acceptCGUSchema } from 'features/auth/pages/signup/AcceptCgu/acceptCguSchema' import { PreValidationSignupLastStepProps } from 'features/auth/types' @@ -35,7 +35,7 @@ export const AcceptCgu: FunctionComponent = ({ isSSOSubscription, signUp, }) => { - const { data: settings, isLoading: areSettingsLoading } = useSettingsContext() + const { data: settings, isLoading: areSettingsLoading } = useSettings() const networkInfo = useNetInfoContext() const checkCGUErrorId = uuidv4() diff --git a/src/features/auth/pages/signup/SetBirthday/SetBirthday.native.test.tsx b/src/features/auth/pages/signup/SetBirthday/SetBirthday.native.test.tsx index 61ccbba7e06..e5f14fbfe5a 100644 --- a/src/features/auth/pages/signup/SetBirthday/SetBirthday.native.test.tsx +++ b/src/features/auth/pages/signup/SetBirthday/SetBirthday.native.test.tsx @@ -7,10 +7,10 @@ import { DEFAULT_SELECTED_DATE, ELIGIBLE_AGE_DATE, } from 'features/auth/fixtures/fixtures' -import { setSettings } from 'features/auth/tests/setSettings' import { NonEligible } from 'features/tutorial/enums' import { formatDateToISOStringWithoutTime } from 'libs/parsers/formatDates' import { storage } from 'libs/storage' +import { mockSettings } from 'tests/mockSettings' import { act, fireEvent, render, screen } from 'tests/utils' import { SetBirthday } from './SetBirthday' @@ -49,7 +49,7 @@ describe('', () => { beforeEach(async () => { mockdate.set(CURRENT_DATE) await storage.clear(USER_AGE_KEY) - setSettings() + mockSettings() }) it('should render correctly', () => { diff --git a/src/features/auth/pages/signup/SetBirthday/SetBirthday.web.test.tsx b/src/features/auth/pages/signup/SetBirthday/SetBirthday.web.test.tsx index 4a26cf0b88a..c58a50b5363 100644 --- a/src/features/auth/pages/signup/SetBirthday/SetBirthday.web.test.tsx +++ b/src/features/auth/pages/signup/SetBirthday/SetBirthday.web.test.tsx @@ -2,7 +2,7 @@ import mockdate from 'mockdate' import React from 'react' import { CURRENT_DATE } from 'features/auth/fixtures/fixtures' -import { setSettings } from 'features/auth/tests/setSettings' +import { mockSettings } from 'tests/mockSettings' import { act, fireEvent, render, screen } from 'tests/utils/web' import { SetBirthday } from './SetBirthday' @@ -26,7 +26,7 @@ jest.mock('ui/theme/customFocusOutline/customFocusOutline') describe('', () => { beforeEach(() => { mockdate.set(CURRENT_DATE) - setSettings() + mockSettings() }) describe('submit button behavior', () => { diff --git a/src/features/auth/pages/signup/SignupForm.native.test.tsx b/src/features/auth/pages/signup/SignupForm.native.test.tsx index 08ed3ab44c3..03f47e51f10 100644 --- a/src/features/auth/pages/signup/SignupForm.native.test.tsx +++ b/src/features/auth/pages/signup/SignupForm.native.test.tsx @@ -24,6 +24,7 @@ import { analytics } from 'libs/analytics/provider' import { setFeatureFlags } from 'libs/firebase/firestore/featureFlags/__tests__/setFeatureFlags' import { RemoteStoreFeatureFlags } from 'libs/firebase/firestore/types' import { eventMonitoring } from 'libs/monitoring/services' +import { mockSettings } from 'tests/mockSettings' import { mockServer } from 'tests/mswServer' import { reactQueryProviderHOC } from 'tests/reactQueryProviderHOC' import { act, fireEvent, render, screen, waitFor } from 'tests/utils' @@ -33,6 +34,7 @@ import { SignupForm } from './SignupForm' jest.mock('libs/campaign') jest.mock('libs/react-native-device-info/getDeviceId') jest.mock('libs/network/NetInfoWrapper') +mockSettings({ isRecaptchaEnabled: false }) const getModelSpy = jest.spyOn(DeviceInfo, 'getModel') const getSystemNameSpy = jest.spyOn(DeviceInfo, 'getSystemName') diff --git a/src/features/auth/pages/suspendedAccount/AccountStatusScreenHandler/AccountStatusScreenHandler.native.test.tsx b/src/features/auth/pages/suspendedAccount/AccountStatusScreenHandler/AccountStatusScreenHandler.native.test.tsx index 23bc4ae03ee..cb171eae59a 100644 --- a/src/features/auth/pages/suspendedAccount/AccountStatusScreenHandler/AccountStatusScreenHandler.native.test.tsx +++ b/src/features/auth/pages/suspendedAccount/AccountStatusScreenHandler/AccountStatusScreenHandler.native.test.tsx @@ -1,9 +1,9 @@ import React from 'react' import { AccountState } from 'api/gen' -import { setSettings } from 'features/auth/tests/setSettings' import { navigateToHome } from 'features/navigation/helpers/navigateToHome' import { useCurrentRoute } from 'features/navigation/helpers/useCurrentRoute' +import { mockSettings } from 'tests/mockSettings' import { render, screen } from 'tests/utils' import { AccountStatusScreenHandler } from './AccountStatusScreenHandler' @@ -34,7 +34,7 @@ jest.mock('libs/firebase/analytics/analytics') describe('', () => { beforeEach(() => { - setSettings() + mockSettings() }) it('should display SuspendedAccountUponUserRequest component if account is suspended upon user request', () => { diff --git a/src/features/auth/pages/suspendedAccount/SuspendedAccountUponUserRequest/SuspendedAccountUponUserRequest.tsx b/src/features/auth/pages/suspendedAccount/SuspendedAccountUponUserRequest/SuspendedAccountUponUserRequest.tsx index 73527f5a19a..be48ac51045 100644 --- a/src/features/auth/pages/suspendedAccount/SuspendedAccountUponUserRequest/SuspendedAccountUponUserRequest.tsx +++ b/src/features/auth/pages/suspendedAccount/SuspendedAccountUponUserRequest/SuspendedAccountUponUserRequest.tsx @@ -4,7 +4,7 @@ import styled from 'styled-components/native' import { useAccountSuspensionDate } from 'features/auth/api/useAccountSuspensionDate' import { useAccountUnsuspend } from 'features/auth/api/useAccountUnsuspend' -import { useSettingsContext } from 'features/auth/context/SettingsContext' +import { useSettings } from 'features/auth/context/useSettings' import { useLogoutRoutine } from 'features/auth/helpers/useLogoutRoutine' import { navigateToHomeConfig } from 'features/navigation/helpers/navigateToHome' import { UseNavigationType } from 'features/navigation/RootNavigator/types' @@ -26,7 +26,7 @@ const addDaysToDate = (date: Date, days: number) => { export const SuspendedAccountUponUserRequest = () => { const { replace } = useNavigation() - const { data: settings } = useSettingsContext() + const { data: settings } = useSettings() const { data: accountSuspensionDate } = useAccountSuspensionDate() const signOut = useLogoutRoutine() const { showErrorSnackBar } = useSnackBarContext() diff --git a/src/features/auth/pages/suspendedAccount/SuspendedAccountUponUserRequest/SuspendedAccountUponUserRequest.web.test.tsx b/src/features/auth/pages/suspendedAccount/SuspendedAccountUponUserRequest/SuspendedAccountUponUserRequest.web.test.tsx index dc86ef7c3fe..b59b7edd536 100644 --- a/src/features/auth/pages/suspendedAccount/SuspendedAccountUponUserRequest/SuspendedAccountUponUserRequest.web.test.tsx +++ b/src/features/auth/pages/suspendedAccount/SuspendedAccountUponUserRequest/SuspendedAccountUponUserRequest.web.test.tsx @@ -1,6 +1,7 @@ import React from 'react' import { UserSuspensionDateResponse } from 'api/gen' +import { mockSettings } from 'tests/mockSettings' import { mockServer } from 'tests/mswServer' import { reactQueryProviderHOC } from 'tests/reactQueryProviderHOC' import { checkAccessibilityFor, render, screen } from 'tests/utils/web' @@ -11,6 +12,7 @@ jest.mock('libs/jwt/jwt') jest.mock('libs/firebase/analytics/analytics') jest.mock('libs/firebase/remoteConfig/remoteConfig.services') +mockSettings() describe('', () => { describe('Accessibility', () => { diff --git a/src/features/birthdayNotifications/pages/EighteenBirthday.web.test.tsx b/src/features/birthdayNotifications/pages/EighteenBirthday.web.test.tsx index 7ffc1e4259f..ef17ea46a9e 100644 --- a/src/features/birthdayNotifications/pages/EighteenBirthday.web.test.tsx +++ b/src/features/birthdayNotifications/pages/EighteenBirthday.web.test.tsx @@ -3,6 +3,7 @@ import React from 'react' import { setFeatureFlags } from 'libs/firebase/firestore/featureFlags/__tests__/setFeatureFlags' import { RemoteStoreFeatureFlags } from 'libs/firebase/firestore/types' import { useDepositAmountsByAge } from 'shared/user/useDepositAmountsByAge' +import { mockSettings } from 'tests/mockSettings' import { checkAccessibilityFor, render } from 'tests/utils/web' import { EighteenBirthday } from './EighteenBirthday' @@ -13,6 +14,7 @@ mockUseDepositAmountsByAge.mockReturnValue({ eighteenYearsOldDeposit: '300 €' jest.mock('libs/firebase/analytics/analytics') jest.mock('libs/firebase/remoteConfig/remoteConfig.services') +mockSettings() describe('', () => { describe('Accessibility', () => { diff --git a/src/features/birthdayNotifications/pages/RecreditBirthdayNotification.native.test.tsx b/src/features/birthdayNotifications/pages/RecreditBirthdayNotification.native.test.tsx index 16586e9b8f5..d4e8d6b3ab4 100644 --- a/src/features/birthdayNotifications/pages/RecreditBirthdayNotification.native.test.tsx +++ b/src/features/birthdayNotifications/pages/RecreditBirthdayNotification.native.test.tsx @@ -1,10 +1,10 @@ import mockdate from 'mockdate' import React from 'react' -import { setSettings } from 'features/auth/tests/setSettings' import { underageBeneficiaryUser } from 'fixtures/user' import { setFeatureFlags } from 'libs/firebase/firestore/featureFlags/__tests__/setFeatureFlags' import { mockAuthContextWithUser } from 'tests/AuthContextUtils' +import { mockSettings } from 'tests/mockSettings' import { reactQueryProviderHOC } from 'tests/reactQueryProviderHOC' import { render, screen } from 'tests/utils' @@ -31,7 +31,7 @@ describe('', () => { beforeEach(() => { setFeatureFlags() - setSettings() + mockSettings() }) it('should have correct credit text', async () => { @@ -56,7 +56,7 @@ describe('', () => { describe('when enableCreditV3 activated', () => { beforeEach(() => { - setSettings({ wipEnableCreditV3: true }) + mockSettings({ wipEnableCreditV3: true }) }) it('should have correct credit information text', async () => { diff --git a/src/features/birthdayNotifications/pages/RecreditBirthdayNotification.tsx b/src/features/birthdayNotifications/pages/RecreditBirthdayNotification.tsx index 6fdf0a7db05..b0b3a97e7cf 100644 --- a/src/features/birthdayNotifications/pages/RecreditBirthdayNotification.tsx +++ b/src/features/birthdayNotifications/pages/RecreditBirthdayNotification.tsx @@ -2,7 +2,7 @@ import React, { useCallback, useEffect } from 'react' import styled, { useTheme } from 'styled-components/native' import { useAuthContext } from 'features/auth/context/AuthContext' -import { useSettingsContext } from 'features/auth/context/SettingsContext' +import { useSettings } from 'features/auth/context/useSettings' import { navigateToHome } from 'features/navigation/helpers/navigateToHome' import { useResetRecreditAmountToShow } from 'features/profile/api/useResetRecreditAmountToShow' import { useAppStateChange } from 'libs/appState' @@ -26,7 +26,7 @@ import { getNoHeadingAttrs } from 'ui/theme/typographyAttrs/getNoHeadingAttrs' export const RecreditBirthdayNotification = () => { const { user } = useAuthContext() const { uniqueColors } = useTheme() - const { data: settings } = useSettingsContext() + const { data: settings } = useSettings() const age = getAge(user?.birthDate) diff --git a/src/features/birthdayNotifications/pages/RecreditBirthdayNotification.web.test.tsx b/src/features/birthdayNotifications/pages/RecreditBirthdayNotification.web.test.tsx index f877b7c31df..a943fb56433 100644 --- a/src/features/birthdayNotifications/pages/RecreditBirthdayNotification.web.test.tsx +++ b/src/features/birthdayNotifications/pages/RecreditBirthdayNotification.web.test.tsx @@ -2,6 +2,7 @@ import React from 'react' import { setFeatureFlags } from 'libs/firebase/firestore/featureFlags/__tests__/setFeatureFlags' import { RemoteStoreFeatureFlags } from 'libs/firebase/firestore/types' +import { mockSettings } from 'tests/mockSettings' import { reactQueryProviderHOC } from 'tests/reactQueryProviderHOC' import { checkAccessibilityFor, render, screen } from 'tests/utils/web' @@ -9,6 +10,7 @@ import { RecreditBirthdayNotification } from './RecreditBirthdayNotification' jest.mock('libs/firebase/analytics/analytics') jest.mock('libs/firebase/remoteConfig/remoteConfig.services') +mockSettings() describe('', () => { describe('Accessibility', () => { diff --git a/src/features/bookOffer/components/BookDuoChoice.native.test.tsx b/src/features/bookOffer/components/BookDuoChoice.native.test.tsx index bdb75875e22..08b3792bbbc 100644 --- a/src/features/bookOffer/components/BookDuoChoice.native.test.tsx +++ b/src/features/bookOffer/components/BookDuoChoice.native.test.tsx @@ -3,6 +3,7 @@ import React from 'react' import { BookingState, Step } from 'features/bookOffer/context/reducer' import { mockOffer } from 'features/bookOffer/fixtures/offer' import { setFeatureFlags } from 'libs/firebase/firestore/featureFlags/__tests__/setFeatureFlags' +import { mockSettings } from 'tests/mockSettings' import { fireEvent, render, screen } from 'tests/utils' import { BookDuoChoice } from './BookDuoChoice' @@ -23,6 +24,7 @@ jest.mock('features/bookOffer/context/useBookingContext', () => ({ dismissModal: mockDismissModal, })), })) +mockSettings() jest.mock('features/bookOffer/helpers/useBookingStock', () => ({ useBookingStock: jest.fn(() => ({ diff --git a/src/features/bookOffer/components/BookHourChoice.native.test.tsx b/src/features/bookOffer/components/BookHourChoice.native.test.tsx index b1ba1aa95e3..ff8eced88cf 100644 --- a/src/features/bookOffer/components/BookHourChoice.native.test.tsx +++ b/src/features/bookOffer/components/BookHourChoice.native.test.tsx @@ -6,6 +6,7 @@ import { mockOffer as mockBaseOffer } from 'features/bookOffer/fixtures/offer' import { stock1, stock2, stock3, stock4 } from 'features/bookOffer/fixtures/stocks' import { IBookingContext } from 'features/bookOffer/types' import { setFeatureFlags } from 'libs/firebase/firestore/featureFlags/__tests__/setFeatureFlags' +import { mockSettings } from 'tests/mockSettings' import { fireEvent, render, screen } from 'tests/utils' import { BookHourChoice } from './BookHourChoice' @@ -14,6 +15,7 @@ const mockStep = Step.HOUR const mockDuoStep = Step.DUO const mockDispatch = jest.fn() +mockSettings() const mockUseBookingContext: jest.Mock = jest.fn() mockUseBookingContext.mockReturnValue({ diff --git a/src/features/bookOffer/components/BookPricesChoice.native.test.tsx b/src/features/bookOffer/components/BookPricesChoice.native.test.tsx index 94132fa9bfe..ec75d980eaa 100644 --- a/src/features/bookOffer/components/BookPricesChoice.native.test.tsx +++ b/src/features/bookOffer/components/BookPricesChoice.native.test.tsx @@ -5,6 +5,7 @@ import { BookingState, initialBookingState } from 'features/bookOffer/context/re import { mockStocks } from 'features/bookOffer/fixtures/stocks' import { IBookingContext } from 'features/bookOffer/types' import { setFeatureFlags } from 'libs/firebase/firestore/featureFlags/__tests__/setFeatureFlags' +import { mockSettings } from 'tests/mockSettings' import { fireEvent, render, screen } from 'tests/utils' const mockInitialBookingState = initialBookingState @@ -25,6 +26,7 @@ const mockCreditOffer = 50000 jest.mock('features/offer/helpers/useHasEnoughCredit/useHasEnoughCredit', () => ({ useCreditForOffer: jest.fn(() => mockCreditOffer), })) +mockSettings() describe('BookPricesChoice', () => { beforeEach(() => { diff --git a/src/features/bookOffer/components/BookingEventChoices.native.test.tsx b/src/features/bookOffer/components/BookingEventChoices.native.test.tsx index 566fcac854f..4dcc240f2b5 100644 --- a/src/features/bookOffer/components/BookingEventChoices.native.test.tsx +++ b/src/features/bookOffer/components/BookingEventChoices.native.test.tsx @@ -7,12 +7,14 @@ import { offerResponseSnap } from 'features/offer/fixtures/offerResponse' import { beneficiaryUser } from 'fixtures/user' import { setFeatureFlags } from 'libs/firebase/firestore/featureFlags/__tests__/setFeatureFlags' import { mockAuthContextWithUser } from 'tests/AuthContextUtils' +import { mockSettings } from 'tests/mockSettings' import { mockServer } from 'tests/mswServer' import { reactQueryProviderHOC } from 'tests/reactQueryProviderHOC' import { render, screen, waitFor } from 'tests/utils' import { BookingEventChoices } from './BookingEventChoices' +mockSettings() jest.mock('features/auth/context/AuthContext') const mockUseBooking = useBookingContext as jest.Mock diff --git a/src/features/bookOffer/components/BookingInformations.native.test.tsx b/src/features/bookOffer/components/BookingInformations.native.test.tsx index 543a7c3c5be..8cbc8776f9b 100644 --- a/src/features/bookOffer/components/BookingInformations.native.test.tsx +++ b/src/features/bookOffer/components/BookingInformations.native.test.tsx @@ -8,6 +8,7 @@ import { useBookingStock } from 'features/bookOffer/helpers/useBookingStock' import { offerStockResponseSnap } from 'features/offer/fixtures/offerStockResponse' import { setFeatureFlags } from 'libs/firebase/firestore/featureFlags/__tests__/setFeatureFlags' import { formatDateTimezone } from 'libs/parsers/formatDates' +import { mockSettings } from 'tests/mockSettings' import { render, screen } from 'tests/utils' import { BookingInformations } from './BookingInformations' @@ -17,6 +18,7 @@ const randomDatetime = '2020-12-01T00:00:00Z' jest.mock('features/bookOffer/context/useBookingContext') jest.mock('features/bookOffer/helpers/useBookingStock') jest.mock('libs/address/useFormatFullAddress') +mockSettings() const mockedUseBooking = jest.mocked(useBookingContext) const mockedUseBookingStock = jest.mocked(useBookingStock) diff --git a/src/features/bookOffer/components/PriceLine.native.test.tsx b/src/features/bookOffer/components/PriceLine.native.test.tsx index de11adeaa39..7f039fcd03e 100644 --- a/src/features/bookOffer/components/PriceLine.native.test.tsx +++ b/src/features/bookOffer/components/PriceLine.native.test.tsx @@ -2,10 +2,13 @@ import React from 'react' import { PriceLine } from 'features/bookOffer/components/PriceLine' import { setFeatureFlags } from 'libs/firebase/firestore/featureFlags/__tests__/setFeatureFlags' +import { mockSettings } from 'tests/mockSettings' import { render, screen } from 'tests/utils' const attributes = ['VOSTFR', '3D', 'IMAX'] +mockSettings() + describe('', () => { beforeEach(() => { setFeatureFlags() diff --git a/src/features/bookOffer/pages/BookingConfirmation.native.test.tsx b/src/features/bookOffer/pages/BookingConfirmation.native.test.tsx index 8ce1440657b..52f96163b3e 100644 --- a/src/features/bookOffer/pages/BookingConfirmation.native.test.tsx +++ b/src/features/bookOffer/pages/BookingConfirmation.native.test.tsx @@ -7,10 +7,12 @@ import { useReviewInAppInformation } from 'features/bookOffer/helpers/useReviewI import { analytics } from 'libs/analytics/provider' import { setFeatureFlags } from 'libs/firebase/firestore/featureFlags/__tests__/setFeatureFlags' import { BatchProfile } from 'libs/react-native-batch' +import { mockSettings } from 'tests/mockSettings' import { act, render, screen, userEvent } from 'tests/utils' import { BookingConfirmation } from './BookingConfirmation' +mockSettings() jest.mock('react-native/Libraries/Animated/animations/TimingAnimation.js') jest.mock('features/offer/api/useOffer') diff --git a/src/features/bookOffer/pages/BookingOfferModal.native.test.tsx b/src/features/bookOffer/pages/BookingOfferModal.native.test.tsx index 4107a307f37..e5a34f9d57e 100644 --- a/src/features/bookOffer/pages/BookingOfferModal.native.test.tsx +++ b/src/features/bookOffer/pages/BookingOfferModal.native.test.tsx @@ -16,12 +16,14 @@ import * as logOfferConversionAPI from 'libs/algolia/analytics/logOfferConversio import { analytics } from 'libs/analytics/provider' import { CampaignEvents, campaignTracker } from 'libs/campaign' import { setFeatureFlags } from 'libs/firebase/firestore/featureFlags/__tests__/setFeatureFlags' +import { mockSettings } from 'tests/mockSettings' import { reactQueryProviderHOC } from 'tests/reactQueryProviderHOC' import { act, fireEvent, render, screen, waitFor } from 'tests/utils' import { SnackBarHelperSettings } from 'ui/components/snackBar/types' import { BookingOfferModalComponent } from './BookingOfferModal' +mockSettings() jest.mock('libs/campaign') const mockDismissModal = jest.fn() diff --git a/src/features/bookings/components/BookingPropertiesSection.native.test.tsx b/src/features/bookings/components/BookingPropertiesSection.native.test.tsx index b1284eafcca..97fec66f85b 100644 --- a/src/features/bookings/components/BookingPropertiesSection.native.test.tsx +++ b/src/features/bookings/components/BookingPropertiesSection.native.test.tsx @@ -7,12 +7,14 @@ import { Booking } from 'features/bookings/types' import { beneficiaryUser } from 'fixtures/user' import { setFeatureFlags } from 'libs/firebase/firestore/featureFlags/__tests__/setFeatureFlags' import { mockAuthContextWithUser } from 'tests/AuthContextUtils' +import { mockSettings } from 'tests/mockSettings' import { reactQueryProviderHOC } from 'tests/reactQueryProviderHOC' import { render, screen, waitFor } from 'tests/utils' jest.mock('features/auth/context/AuthContext') jest.mock('libs/firebase/analytics/analytics') +mockSettings() describe('', () => { beforeEach(() => { diff --git a/src/features/bookings/pages/BookingDetails/BookingDetails.web.test.tsx b/src/features/bookings/pages/BookingDetails/BookingDetails.web.test.tsx index 1054e381cf6..c31e15d5042 100644 --- a/src/features/bookings/pages/BookingDetails/BookingDetails.web.test.tsx +++ b/src/features/bookings/pages/BookingDetails/BookingDetails.web.test.tsx @@ -11,6 +11,7 @@ import { setFeatureFlags } from 'libs/firebase/firestore/featureFlags/__tests__/ import { RemoteStoreFeatureFlags } from 'libs/firebase/firestore/types' import * as useNetInfoContextDefault from 'libs/network/NetInfoWrapper' import { subcategoriesDataTest } from 'libs/subcategories/fixtures/subcategoriesResponse' +import { mockSettings } from 'tests/mockSettings' import { mockServer } from 'tests/mswServer' import { reactQueryProviderHOC } from 'tests/reactQueryProviderHOC' import { act, checkAccessibilityFor, render } from 'tests/utils/web' @@ -28,6 +29,7 @@ const mockUseNetInfoContext = jest.spyOn(useNetInfoContextDefault, 'useNetInfoCo jest.mock('libs/firebase/analytics/analytics') jest.mock('libs/firebase/remoteConfig/remoteConfig.services') +mockSettings() describe('BookingDetails', () => { mockUseNetInfoContext.mockReturnValue({ isConnected: true }) diff --git a/src/features/bookings/pages/EndedBookings/EndedBookings.web.test.tsx b/src/features/bookings/pages/EndedBookings/EndedBookings.web.test.tsx index 0bfb98e1bb3..58443d471d6 100644 --- a/src/features/bookings/pages/EndedBookings/EndedBookings.web.test.tsx +++ b/src/features/bookings/pages/EndedBookings/EndedBookings.web.test.tsx @@ -3,6 +3,7 @@ import React from 'react' import { CategoryIdEnum, NativeCategoryIdEnumv2, SubcategoryIdEnum } from 'api/gen' import { bookingsSnap } from 'features/bookings/fixtures/bookingsSnap' import { setFeatureFlags } from 'libs/firebase/firestore/featureFlags/__tests__/setFeatureFlags' +import { mockSettings } from 'tests/mockSettings' import { reactQueryProviderHOC } from 'tests/reactQueryProviderHOC' import { checkAccessibilityFor, render } from 'tests/utils/web' @@ -10,6 +11,7 @@ import { EndedBookings } from './EndedBookings' jest.mock('libs/firebase/analytics/analytics') jest.mock('libs/firebase/remoteConfig/remoteConfig.services') +mockSettings() const mockBookings = { ...bookingsSnap } jest.mock('features/bookings/api/useBookings', () => ({ diff --git a/src/features/chronicle/components/ChronicleOfferInfo/ChronicleOfferInfo.web.test.tsx b/src/features/chronicle/components/ChronicleOfferInfo/ChronicleOfferInfo.web.test.tsx index c154f81699c..53ea9d67b0f 100644 --- a/src/features/chronicle/components/ChronicleOfferInfo/ChronicleOfferInfo.web.test.tsx +++ b/src/features/chronicle/components/ChronicleOfferInfo/ChronicleOfferInfo.web.test.tsx @@ -1,10 +1,13 @@ import React from 'react' import { Button } from 'react-native' +import { mockSettings } from 'tests/mockSettings' import { render, screen } from 'tests/utils/web' import { ChronicleOfferInfo } from './ChronicleOfferInfo.web' +mockSettings() + describe('ChronicleOfferInfo', () => { it('should render correctly', () => { render() diff --git a/src/features/cookies/pages/CookiesDetails.web.test.tsx b/src/features/cookies/pages/CookiesDetails.web.test.tsx index cdc312fb14d..f346bdce255 100644 --- a/src/features/cookies/pages/CookiesDetails.web.test.tsx +++ b/src/features/cookies/pages/CookiesDetails.web.test.tsx @@ -1,10 +1,12 @@ import React from 'react' import { CookiesDetails } from 'features/cookies/pages/CookiesDetails' +import { mockSettings } from 'tests/mockSettings' import { reactQueryProviderHOC } from 'tests/reactQueryProviderHOC' import { act, checkAccessibilityFor, render } from 'tests/utils/web' jest.mock('features/profile/api/useUpdateProfileMutation') +mockSettings() // Fix the error "IDs used in ARIA and labels must be unique (duplicate-id-aria)" because the UUIDV4 mock return "testUuidV4" jest.mock('uuid', () => { diff --git a/src/features/favorites/pages/Favorites.perf.test.tsx b/src/features/favorites/pages/Favorites.perf.test.tsx index f88e82edcb2..a542867aaf4 100644 --- a/src/features/favorites/pages/Favorites.perf.test.tsx +++ b/src/features/favorites/pages/Favorites.perf.test.tsx @@ -11,6 +11,7 @@ import { setFeatureFlags } from 'libs/firebase/firestore/featureFlags/__tests__/ import { RemoteStoreFeatureFlags } from 'libs/firebase/firestore/types' import { decodedTokenWithRemainingLifetime } from 'libs/jwt/fixtures' import { storage } from 'libs/storage' +import { mockSettings } from 'tests/mockSettings' import { mockServer } from 'tests/mswServer' import { reactQueryProviderHOC } from 'tests/reactQueryProviderHOC' import { measurePerformance, screen } from 'tests/utils' @@ -21,6 +22,8 @@ jest.mock('features/favorites/context/FavoritesWrapper') jest.mock('react-native/Libraries/Animated/NativeAnimatedHelper') +mockSettings() + // Performance measuring is run multiple times so we need to increase the timeout const TEST_TIMEOUT_IN_MS = 30000 jest.setTimeout(TEST_TIMEOUT_IN_MS) diff --git a/src/features/home/api/useHighlightOffer.native.test.ts b/src/features/home/api/useHighlightOffer.native.test.ts index 159fea97efc..4a3512fc0ec 100644 --- a/src/features/home/api/useHighlightOffer.native.test.ts +++ b/src/features/home/api/useHighlightOffer.native.test.ts @@ -6,6 +6,8 @@ import { mockedAlgoliaResponse } from 'libs/algolia/fixtures/algoliaFixtures' import { useLocation } from 'libs/location' import { ILocationContext } from 'libs/location/types' import { offersFixture } from 'shared/offer/offer.fixture' +import { Offer } from 'shared/offer/types' +import { mockSettings } from 'tests/mockSettings' import { reactQueryProviderHOC } from 'tests/reactQueryProviderHOC' import { renderHook, waitFor } from 'tests/utils' @@ -26,34 +28,45 @@ const mockFetchOffersByEan = fetchOffersByEan as jest.MockedFunction { it('should return offer when offerId is provided', async () => { - mockFetchOffersByIds.mockResolvedValueOnce([mockOffers[0]]) + mockFetchOffersByIds.mockResolvedValueOnce([mockOffer]) const { result } = renderUseHighlightOfferHook({ offerId: 'offerId1' }) - await waitFor(() => expect(result.current).toEqual(offersFixture[0])) + await waitFor(() => expect(result.current).toEqual(mockOfferFixture)) }) it('should return offer when offerTag is provided', async () => { - mockFetchOffersByTags.mockResolvedValueOnce([mockOffers[0]]) + mockFetchOffersByTags.mockResolvedValueOnce([mockOffer]) const { result } = renderUseHighlightOfferHook({ offerTag: 'test-tag' }) - await waitFor(() => expect(result.current).toEqual(offersFixture[0])) + await waitFor(() => expect(result.current).toEqual(mockOfferFixture)) }) it('should return offer when offerEan is provided', async () => { - mockFetchOffersByEan.mockResolvedValueOnce([mockOffers[0]]) + mockFetchOffersByEan.mockResolvedValueOnce([mockOffer]) const { result } = renderUseHighlightOfferHook({ offerEan: '1234567891234' }) - await waitFor(() => expect(result.current).toEqual(offersFixture[0])) + await waitFor(() => expect(result.current).toEqual(mockOfferFixture)) }) it('should return undefined when no offer id or tag or ean is provided', async () => { @@ -64,7 +77,6 @@ describe('useHighlightOffer', () => { describe('geolocation', () => { it('should return offer when isGeolocated is true and the distance to the offer is within the radius', async () => { - const mockOffer = mockOffers[0] // eslint-disable-next-line local-rules/independent-mocks mockUseLocation.mockReturnValue({ geolocPosition: { latitude: mockOffer._geoloc.lat, longitude: mockOffer._geoloc.lng }, @@ -78,11 +90,10 @@ describe('useHighlightOffer', () => { aroundRadius: 100, }) - await waitFor(() => expect(result.current).toEqual(offersFixture[0])) + await waitFor(() => expect(result.current).toEqual(mockOfferFixture)) }) it('should not return offer when isGeolocated is true and the distance to the offer is beyond radius', async () => { - const mockOffer = mockOffers[0] // eslint-disable-next-line local-rules/independent-mocks mockUseLocation.mockReturnValue({ geolocPosition: { latitude: 1, longitude: 1 }, @@ -99,7 +110,6 @@ describe('useHighlightOffer', () => { }) it('should not return offer when isGeolocated is true and the user position is not defined', async () => { - const mockOffer = mockOffers[0] // eslint-disable-next-line local-rules/independent-mocks mockUseLocation.mockReturnValue({ geolocPosition: undefined, @@ -116,7 +126,6 @@ describe('useHighlightOffer', () => { }) it('should return offer when isGeolocated is true and around radius is not defined', async () => { - const mockOffer = mockOffers[0] // eslint-disable-next-line local-rules/independent-mocks mockUseLocation.mockReturnValue({ geolocPosition: { latitude: mockOffer._geoloc.lat, longitude: mockOffer._geoloc.lng }, @@ -128,7 +137,7 @@ describe('useHighlightOffer', () => { isGeolocated: true, }) - await waitFor(() => expect(result.current).toEqual(offersFixture[0])) + await waitFor(() => expect(result.current).toEqual(mockOfferFixture)) }) }) }) diff --git a/src/features/home/api/useVideoOffers.native.test.ts b/src/features/home/api/useVideoOffers.native.test.ts index 067ba251818..1de7caf7c06 100644 --- a/src/features/home/api/useVideoOffers.native.test.ts +++ b/src/features/home/api/useVideoOffers.native.test.ts @@ -7,10 +7,12 @@ import { fetchOffersByIds } from 'libs/algolia/fetchAlgolia/fetchOffersByIds' import { mockedAlgoliaResponse } from 'libs/algolia/fixtures/algoliaFixtures' import { subcategoriesDataTest } from 'libs/subcategories/fixtures/subcategoriesResponse' import { offersFixture } from 'shared/offer/offer.fixture' +import { mockSettings } from 'tests/mockSettings' import { mockServer } from 'tests/mswServer' import { reactQueryProviderHOC } from 'tests/reactQueryProviderHOC' import { renderHook, act } from 'tests/utils' +mockSettings() jest.mock('libs/algolia/fetchAlgolia/fetchOffersByIds', () => ({ fetchOffersByIds: jest.fn(), })) @@ -49,7 +51,8 @@ describe('useVideoOffers', () => { await act(async () => {}) - expect(result.current.offers).toEqual([offersFixture[0], offersFixture[1]]) + expect(result.current.offers[0]?.objectID).toEqual(offersFixture[0].objectID) + expect(result.current.offers[1]?.objectID).toEqual(offersFixture[1].objectID) }) it('should return offers when asking for specific EANs', async () => { @@ -66,7 +69,8 @@ describe('useVideoOffers', () => { await act(async () => {}) await act(async () => {}) - expect(result.current.offers).toEqual([offersFixture[0], offersFixture[1]]) + expect(result.current.offers[0]?.objectID).toEqual(offersFixture[0].objectID) + expect(result.current.offers[1]?.objectID).toEqual(offersFixture[1].objectID) }) it('should return offers when only OffersModuleParameters are provided', async () => { @@ -81,6 +85,6 @@ describe('useVideoOffers', () => { await act(async () => {}) - expect(result.current.offers).toEqual(offersFixture) + expect(result.current.offers).toHaveLength(mockedAlgoliaResponse.hits.length) }) }) diff --git a/src/features/home/components/AttachedModuleCard/AttachedOfferCard.native.test.tsx b/src/features/home/components/AttachedModuleCard/AttachedOfferCard.native.test.tsx index 2abd6701849..a358022e7c8 100644 --- a/src/features/home/components/AttachedModuleCard/AttachedOfferCard.native.test.tsx +++ b/src/features/home/components/AttachedModuleCard/AttachedOfferCard.native.test.tsx @@ -10,6 +10,7 @@ import { ILocationContext, LocationMode } from 'libs/location/types' import { PLACEHOLDER_DATA } from 'libs/subcategories/placeholderData' import { useSubcategories } from 'libs/subcategories/useSubcategories' import { offersFixture } from 'shared/offer/offer.fixture' +import { mockSettings } from 'tests/mockSettings' import { render, screen } from 'tests/utils' const offer = offersFixture[2] @@ -34,6 +35,7 @@ const AROUND_ME_POSITION = { const mockUseLocation: jest.Mock> = jest.fn( () => EVERYWHERE_USER_POSITION ) +mockSettings() jest.mock('libs/location/LocationWrapper', () => ({ useLocation: () => mockUseLocation(), })) diff --git a/src/features/home/components/banners/SignupBanner.native.test.tsx b/src/features/home/components/banners/SignupBanner.native.test.tsx index 650e285be37..10be83605d5 100644 --- a/src/features/home/components/banners/SignupBanner.native.test.tsx +++ b/src/features/home/components/banners/SignupBanner.native.test.tsx @@ -1,16 +1,17 @@ import React from 'react' import { navigate } from '__mocks__/@react-navigation/native' -import { setSettings } from 'features/auth/tests/setSettings' import { SignupBanner } from 'features/home/components/banners/SignupBanner' import { StepperOrigin } from 'features/navigation/RootNavigator/types' import { analytics } from 'libs/analytics/provider' import { setFeatureFlags } from 'libs/firebase/firestore/featureFlags/__tests__/setFeatureFlags' import { RemoteStoreFeatureFlags } from 'libs/firebase/firestore/types' +import { mockSettings } from 'tests/mockSettings' import { userEvent, render, screen } from 'tests/utils' const user = userEvent.setup() jest.useFakeTimers() +mockSettings() describe('SignupBanner', () => { beforeEach(() => setFeatureFlags()) @@ -87,7 +88,7 @@ describe('SignupBanner', () => { describe('when enableCreditV3 activated', () => { beforeEach(() => { - setSettings({ wipEnableCreditV3: true }) + mockSettings({ wipEnableCreditV3: true }) }) it('should display banner with credit V3 subtitle', () => { diff --git a/src/features/home/components/banners/SignupBanner.tsx b/src/features/home/components/banners/SignupBanner.tsx index 105e06f08e9..960eadb4e71 100644 --- a/src/features/home/components/banners/SignupBanner.tsx +++ b/src/features/home/components/banners/SignupBanner.tsx @@ -2,7 +2,7 @@ import { useNavigation } from '@react-navigation/native' import React, { FunctionComponent } from 'react' import styled from 'styled-components/native' -import { useSettingsContext } from 'features/auth/context/SettingsContext' +import { useSettings } from 'features/auth/context/useSettings' import { StepperOrigin, UseNavigationType } from 'features/navigation/RootNavigator/types' import { analytics } from 'libs/analytics/provider' import { BannerWithBackground } from 'ui/components/ModuleBanner/BannerWithBackground' @@ -18,7 +18,7 @@ type Props = { export const SignupBanner: FunctionComponent = ({ hasGraphicRedesign }) => { const { navigate } = useNavigation() - const { data: settings } = useSettingsContext() + const { data: settings } = useSettings() const enableCreditV3 = settings?.wipEnableCreditV3 const title = 'Débloque ton crédit' diff --git a/src/features/home/components/modules/RecommendationModule.native.test.tsx b/src/features/home/components/modules/RecommendationModule.native.test.tsx index ec41028759e..89f75096973 100644 --- a/src/features/home/components/modules/RecommendationModule.native.test.tsx +++ b/src/features/home/components/modules/RecommendationModule.native.test.tsx @@ -7,6 +7,7 @@ import { ContentTypes, DisplayParametersFields } from 'libs/contentful/types' import { setFeatureFlags } from 'libs/firebase/firestore/featureFlags/__tests__/setFeatureFlags' import { RemoteStoreFeatureFlags } from 'libs/firebase/firestore/types' import { subcategoriesDataTest } from 'libs/subcategories/fixtures/subcategoriesResponse' +import { mockSettings } from 'tests/mockSettings' import { mockServer } from 'tests/mswServer' import { reactQueryProviderHOC } from 'tests/reactQueryProviderHOC' import { render, screen, waitFor } from 'tests/utils' @@ -33,6 +34,8 @@ jest.mock('features/home/api/useHomeRecommendedOffers', () => ({ useHomeRecommendedOffers: () => mockUseHomeRecommendedOffers(), })) +mockSettings() + jest.mock('libs/firebase/analytics/analytics') describe('RecommendationModule', () => { diff --git a/src/features/home/components/modules/VenueListModule.native.test.tsx b/src/features/home/components/modules/VenueListModule.native.test.tsx index 308f4e66601..675b0eb0d39 100644 --- a/src/features/home/components/modules/VenueListModule.native.test.tsx +++ b/src/features/home/components/modules/VenueListModule.native.test.tsx @@ -9,11 +9,13 @@ import { setFeatureFlags } from 'libs/firebase/firestore/featureFlags/__tests__/ import { RemoteStoreFeatureFlags } from 'libs/firebase/firestore/types' import { LocationMode } from 'libs/location/types' import { SuggestedPlace } from 'libs/place/types' +import { mockSettings } from 'tests/mockSettings' import { fireEvent, render, screen, waitFor } from 'tests/utils' import * as useModalAPI from 'ui/components/modals/useModal' const mockShowModal = jest.fn() const useModalAPISpy = jest.spyOn(useModalAPI, 'useModal') +mockSettings() const mockedPlace: SuggestedPlace = { label: 'Kourou', diff --git a/src/features/home/components/modules/VenueListModule.web.test.tsx b/src/features/home/components/modules/VenueListModule.web.test.tsx index 5e21ecea673..8e2e5b86187 100644 --- a/src/features/home/components/modules/VenueListModule.web.test.tsx +++ b/src/features/home/components/modules/VenueListModule.web.test.tsx @@ -4,9 +4,11 @@ import { navigate } from '__mocks__/@react-navigation/native' import { VenueListModule } from 'features/home/components/modules/VenueListModule.web' import { venuesSearchFixture } from 'libs/algolia/fixtures/venuesSearchFixture' import { analytics } from 'libs/analytics/provider' +import { mockSettings } from 'tests/mockSettings' import { fireEvent, render, screen, waitFor } from 'tests/utils/web' jest.mock('libs/firebase/remoteConfig/remoteConfig.services') +mockSettings() describe('', () => { it('should redirect to thematic home', async () => { diff --git a/src/features/home/components/modules/VenueListModuleItem.native.test.tsx b/src/features/home/components/modules/VenueListModuleItem.native.test.tsx index d99e43c452a..800b883a406 100644 --- a/src/features/home/components/modules/VenueListModuleItem.native.test.tsx +++ b/src/features/home/components/modules/VenueListModuleItem.native.test.tsx @@ -5,8 +5,11 @@ import { VenueListModule } from 'features/home/components/modules/VenueListModul import { venuesSearchFixture } from 'libs/algolia/fixtures/venuesSearchFixture' import { analytics } from 'libs/analytics/provider' import { setFeatureFlags } from 'libs/firebase/firestore/featureFlags/__tests__/setFeatureFlags' +import { mockSettings } from 'tests/mockSettings' import { fireEvent, render, screen, waitFor } from 'tests/utils' +mockSettings() + describe('', () => { beforeEach(() => { setFeatureFlags() diff --git a/src/features/home/components/modules/exclusivity/ExclusivityBanner.native.test.tsx b/src/features/home/components/modules/exclusivity/ExclusivityBanner.native.test.tsx index 61d579ed86a..c3ab58d00be 100644 --- a/src/features/home/components/modules/exclusivity/ExclusivityBanner.native.test.tsx +++ b/src/features/home/components/modules/exclusivity/ExclusivityBanner.native.test.tsx @@ -3,6 +3,7 @@ import React from 'react' import { ExclusivityBanner } from 'features/home/components/modules/exclusivity/ExclusivityBanner' import { analytics } from 'libs/analytics/provider' import { ContentTypes } from 'libs/contentful/types' +import { mockSettings } from 'tests/mockSettings' import { render } from 'tests/utils' const props = { @@ -15,6 +16,8 @@ const props = { index: 1, } +mockSettings() + describe('ExclusivityBanner component', () => { it('should trigger logEvent "ModuleDisplayedOnHomepage" on render', () => { render() diff --git a/src/features/home/components/modules/exclusivity/ExclusivityExternalLink.native.test.tsx b/src/features/home/components/modules/exclusivity/ExclusivityExternalLink.native.test.tsx index 9f8cb4753f5..98964be834a 100644 --- a/src/features/home/components/modules/exclusivity/ExclusivityExternalLink.native.test.tsx +++ b/src/features/home/components/modules/exclusivity/ExclusivityExternalLink.native.test.tsx @@ -4,9 +4,11 @@ import { ExclusivityExternalLink } from 'features/home/components/modules/exclus import * as NavigationHelpers from 'features/navigation/helpers/openUrl' import { analytics } from 'libs/analytics/provider' import { ContentTypes } from 'libs/contentful/types' +import { mockSettings } from 'tests/mockSettings' import { fireEvent, render, screen } from 'tests/utils' const openUrl = jest.spyOn(NavigationHelpers, 'openUrl') +mockSettings() const props = { title: 'Image d’Adèle', diff --git a/src/features/home/components/modules/exclusivity/ExclusivityModule.native.test.tsx b/src/features/home/components/modules/exclusivity/ExclusivityModule.native.test.tsx index e719980d7b6..483a6a1c530 100644 --- a/src/features/home/components/modules/exclusivity/ExclusivityModule.native.test.tsx +++ b/src/features/home/components/modules/exclusivity/ExclusivityModule.native.test.tsx @@ -4,10 +4,12 @@ import { UseQueryResult } from 'react-query' import { OfferResponseV2 } from 'api/gen' import * as excluOfferAPI from 'features/home/api/useExcluOffer' import { offerResponseSnap as mockOffer } from 'features/offer/fixtures/offerResponse' +import { mockSettings } from 'tests/mockSettings' import { render, screen } from 'tests/utils' import { ExclusivityModule, ExclusivityModuleProps } from './ExclusivityModule' +mockSettings() jest.mock('features/search/helpers/useMaxPrice/useMaxPrice', () => ({ useMaxPrice: jest.fn(() => 300_00), })) diff --git a/src/features/home/components/modules/exclusivity/ExclusivityOffer.native.test.tsx b/src/features/home/components/modules/exclusivity/ExclusivityOffer.native.test.tsx index fab51f7b796..4e76d6c2e41 100644 --- a/src/features/home/components/modules/exclusivity/ExclusivityOffer.native.test.tsx +++ b/src/features/home/components/modules/exclusivity/ExclusivityOffer.native.test.tsx @@ -8,12 +8,15 @@ import { ExclusivityOffer } from 'features/home/components/modules/exclusivity/E import { offerResponseSnap as mockOffer } from 'features/offer/fixtures/offerResponse' import { analytics } from 'libs/analytics/provider' import { ContentTypes } from 'libs/contentful/types' +import { mockSettings } from 'tests/mockSettings' import { fireEvent, render, screen } from 'tests/utils' jest.mock('features/search/helpers/useMaxPrice/useMaxPrice', () => ({ useMaxPrice: jest.fn(() => 300_00), })) +mockSettings() + const props = { title: 'Image d’Adèle', alt: 'Image d’Adèle', diff --git a/src/features/home/components/modules/marketing/MarketingBlockExclusivity.native.test.tsx b/src/features/home/components/modules/marketing/MarketingBlockExclusivity.native.test.tsx index d1920fe881d..4ec88ec4462 100644 --- a/src/features/home/components/modules/marketing/MarketingBlockExclusivity.native.test.tsx +++ b/src/features/home/components/modules/marketing/MarketingBlockExclusivity.native.test.tsx @@ -6,6 +6,7 @@ import { analytics } from 'libs/analytics/provider' import { setFeatureFlags } from 'libs/firebase/firestore/featureFlags/__tests__/setFeatureFlags' import { PLACEHOLDER_DATA } from 'libs/subcategories/placeholderData' import { offersFixture } from 'shared/offer/offer.fixture' +import { mockSettings } from 'tests/mockSettings' import { render, screen, userEvent } from 'tests/utils' import { MarketingBlockExclusivity } from './MarketingBlockExclusivity' @@ -24,6 +25,7 @@ const propsWithPublicationDateTomorrow = { offer: { ...offersFixture[0], offer: { ...offersFixture[0].offer, publicationDate: tomorrow } }, } +mockSettings() jest.mock('libs/subcategories/useSubcategory') const mockSubcategories = PLACEHOLDER_DATA.subcategories jest.mock('libs/subcategories/useSubcategories', () => ({ diff --git a/src/features/home/components/modules/video/VideoModule.native.test.tsx b/src/features/home/components/modules/video/VideoModule.native.test.tsx index cc21f9dc113..ba5b843c1c3 100644 --- a/src/features/home/components/modules/video/VideoModule.native.test.tsx +++ b/src/features/home/components/modules/video/VideoModule.native.test.tsx @@ -7,11 +7,13 @@ import { videoModuleFixture } from 'features/home/fixtures/videoModule.fixture' import { analytics } from 'libs/analytics/provider' import { setFeatureFlags } from 'libs/firebase/firestore/featureFlags/__tests__/setFeatureFlags' import { subcategoriesDataTest } from 'libs/subcategories/fixtures/subcategoriesResponse' +import { mockSettings } from 'tests/mockSettings' import { mockServer } from 'tests/mswServer' import { reactQueryProviderHOC } from 'tests/reactQueryProviderHOC' import { userEvent, render, screen } from 'tests/utils' const mockShowModal = jest.fn() +mockSettings() jest.mock('ui/components/modals/useModal', () => ({ useModal: () => ({ visible: false, diff --git a/src/features/home/pages/Home.web.test.tsx b/src/features/home/pages/Home.web.test.tsx index fe0dc885141..80d5ffc1dbf 100644 --- a/src/features/home/pages/Home.web.test.tsx +++ b/src/features/home/pages/Home.web.test.tsx @@ -7,6 +7,7 @@ import { formattedBusinessModule } from 'features/home/fixtures/homepage.fixture import { setFeatureFlags } from 'libs/firebase/firestore/featureFlags/__tests__/setFeatureFlags' import { RemoteStoreFeatureFlags } from 'libs/firebase/firestore/types' import { subcategoriesDataTest } from 'libs/subcategories/fixtures/subcategoriesResponse' +import { mockSettings } from 'tests/mockSettings' import { mockServer } from 'tests/mswServer' import { reactQueryProviderHOC } from 'tests/reactQueryProviderHOC' import { act, checkAccessibilityFor, render } from 'tests/utils/web' @@ -14,6 +15,7 @@ import { act, checkAccessibilityFor, render } from 'tests/utils/web' import { Home } from './Home' jest.mock('libs/firebase/remoteConfig/remoteConfig.services') +mockSettings() const mockShouldShowSkeleton = false jest.mock('features/home/api/useShowSkeleton', () => ({ diff --git a/src/features/identityCheck/pages/Stepper.web.test.tsx b/src/features/identityCheck/pages/Stepper.web.test.tsx index 91dd950596a..652670d75e6 100644 --- a/src/features/identityCheck/pages/Stepper.web.test.tsx +++ b/src/features/identityCheck/pages/Stepper.web.test.tsx @@ -6,12 +6,14 @@ import { stepsDetailsFixture } from 'features/identityCheck/pages/helpers/stepDe import { useRehydrateProfile } from 'features/identityCheck/pages/helpers/useRehydrateProfile' import { useStepperInfo } from 'features/identityCheck/pages/helpers/useStepperInfo' import { setFeatureFlags } from 'libs/firebase/firestore/featureFlags/__tests__/setFeatureFlags' +import { mockSettings } from 'tests/mockSettings' import { checkAccessibilityFor, render } from 'tests/utils/web' import { Stepper } from './Stepper' jest.mock('libs/firebase/analytics/analytics') jest.mock('libs/firebase/remoteConfig/remoteConfig.services') +mockSettings() mockdate.set(new Date('2020-12-01T00:00:00.000Z')) diff --git a/src/features/identityCheck/pages/confirmation/BeneficiaryAccountCreated.native.test.tsx b/src/features/identityCheck/pages/confirmation/BeneficiaryAccountCreated.native.test.tsx index 995bd9b7b91..4946ca79def 100644 --- a/src/features/identityCheck/pages/confirmation/BeneficiaryAccountCreated.native.test.tsx +++ b/src/features/identityCheck/pages/confirmation/BeneficiaryAccountCreated.native.test.tsx @@ -1,7 +1,6 @@ import React from 'react' import { navigate } from '__mocks__/@react-navigation/native' -import { setSettings } from 'features/auth/tests/setSettings' import { BeneficiaryAccountCreated } from 'features/identityCheck/pages/confirmation/BeneficiaryAccountCreated' import * as ShareAppWrapperModule from 'features/share/context/ShareAppWrapper' import { ShareAppWrapper } from 'features/share/context/ShareAppWrapper' @@ -11,11 +10,13 @@ import { setFeatureFlags } from 'libs/firebase/firestore/featureFlags/__tests__/ import { RemoteStoreFeatureFlags } from 'libs/firebase/firestore/types' import { BatchProfile } from 'libs/react-native-batch' import { mockAuthContextWithUser } from 'tests/AuthContextUtils' +import { mockSettings } from 'tests/mockSettings' import { userEvent, render, screen, act } from 'tests/utils' jest.mock('libs/firebase/remoteConfig/remoteConfig.services') jest.mock('features/auth/context/AuthContext') +mockSettings() const mockShowAppModal = jest.fn() jest @@ -129,7 +130,7 @@ describe('', () => { describe('when enableCreditV3 activated', () => { beforeEach(() => { - setSettings({ wipEnableCreditV3: true }) + mockSettings({ wipEnableCreditV3: true }) }) it('should have correct credit information text', async () => { diff --git a/src/features/identityCheck/pages/confirmation/BeneficiaryAccountCreated.tsx b/src/features/identityCheck/pages/confirmation/BeneficiaryAccountCreated.tsx index f1fe668eded..a05a8800064 100644 --- a/src/features/identityCheck/pages/confirmation/BeneficiaryAccountCreated.tsx +++ b/src/features/identityCheck/pages/confirmation/BeneficiaryAccountCreated.tsx @@ -2,7 +2,7 @@ import React, { useCallback } from 'react' import styled, { useTheme } from 'styled-components/native' import { useAuthContext } from 'features/auth/context/AuthContext' -import { useSettingsContext } from 'features/auth/context/SettingsContext' +import { useSettings } from 'features/auth/context/useSettings' import { creditActions } from 'features/identityCheck/api/useCreditStore' import { navigateToHome, navigateToHomeConfig } from 'features/navigation/helpers/navigateToHome' import { isUserUnderageBeneficiary } from 'features/profile/helpers/isUserUnderageBeneficiary' @@ -28,7 +28,7 @@ export function BeneficiaryAccountCreated() { const maxPriceInCents = useMaxPrice() const { uniqueColors } = useTheme() const { user } = useAuthContext() - const { data: settings } = useSettingsContext() + const { data: settings } = useSettings() const isUnderageBeneficiary = isUserUnderageBeneficiary(user) const shouldShowCulturalSurvey = useShouldShowCulturalSurveyForBeneficiaryUser() diff --git a/src/features/identityCheck/pages/confirmation/BeneficiaryAccountCreated.web.test.tsx b/src/features/identityCheck/pages/confirmation/BeneficiaryAccountCreated.web.test.tsx index 1365239fdf5..8f1bb51785f 100644 --- a/src/features/identityCheck/pages/confirmation/BeneficiaryAccountCreated.web.test.tsx +++ b/src/features/identityCheck/pages/confirmation/BeneficiaryAccountCreated.web.test.tsx @@ -2,6 +2,7 @@ import React from 'react' import { setFeatureFlags } from 'libs/firebase/firestore/featureFlags/__tests__/setFeatureFlags' import { RemoteStoreFeatureFlags } from 'libs/firebase/firestore/types' +import { mockSettings } from 'tests/mockSettings' import { render, checkAccessibilityFor, screen } from 'tests/utils/web' import { BeneficiaryAccountCreated } from './BeneficiaryAccountCreated' @@ -9,6 +10,7 @@ import { BeneficiaryAccountCreated } from './BeneficiaryAccountCreated' jest.mock('libs/firebase/remoteConfig/remoteConfig.services') jest.mock('features/auth/context/AuthContext') +mockSettings() describe('', () => { describe('Accessibility', () => { diff --git a/src/features/identityCheck/pages/helpers/useStepperInfo.native.test.tsx b/src/features/identityCheck/pages/helpers/useStepperInfo.native.test.tsx index fa34a94b847..aa3b5d4fce0 100644 --- a/src/features/identityCheck/pages/helpers/useStepperInfo.native.test.tsx +++ b/src/features/identityCheck/pages/helpers/useStepperInfo.native.test.tsx @@ -1,7 +1,6 @@ import { UseQueryResult } from 'react-query' import { SubscriptionStepperResponseV2 } from 'api/gen' -import { setSettings } from 'features/auth/tests/setSettings' import { useGetStepperInfo } from 'features/identityCheck/api/useGetStepperInfo' import { usePhoneValidationRemainingAttempts } from 'features/identityCheck/api/usePhoneValidationRemainingAttempts' import { initialSubscriptionState as mockState } from 'features/identityCheck/context/reducer' @@ -15,6 +14,7 @@ import { beneficiaryUser } from 'fixtures/user' import { setFeatureFlags } from 'libs/firebase/firestore/featureFlags/__tests__/setFeatureFlags' import { RemoteStoreFeatureFlags } from 'libs/firebase/firestore/types' import { mockAuthContextWithUser } from 'tests/AuthContextUtils' +import { mockSettings } from 'tests/mockSettings' const mockIdentityCheckState = mockState const mockRemainingAttempts = { @@ -57,7 +57,7 @@ jest.mock('features/identityCheck/context/SubscriptionContextProvider', () => ({ describe('useStepperInfo', () => { beforeEach(() => { setFeatureFlags() - setSettings({ enablePhoneValidation: true }) + mockSettings({ enablePhoneValidation: true }) }) it('should return title and subtitle', () => { @@ -106,7 +106,7 @@ describe('useStepperInfo', () => { }, }) - setSettings({ enablePhoneValidation: false }) + mockSettings({ enablePhoneValidation: false }) const { stepsDetails } = useStepperInfo() const phoneValidationStep = stepsDetails.find( diff --git a/src/features/identityCheck/pages/helpers/useStepperInfo.tsx b/src/features/identityCheck/pages/helpers/useStepperInfo.tsx index d949cbe706a..29801313a87 100644 --- a/src/features/identityCheck/pages/helpers/useStepperInfo.tsx +++ b/src/features/identityCheck/pages/helpers/useStepperInfo.tsx @@ -2,7 +2,7 @@ import React from 'react' import { CurrencyEnum, SubscriptionStepCompletionState } from 'api/gen' import { useAuthContext } from 'features/auth/context/AuthContext' -import { useSettingsContext } from 'features/auth/context/SettingsContext' +import { useSettings } from 'features/auth/context/useSettings' import { useGetStepperInfo } from 'features/identityCheck/api/useGetStepperInfo' import { usePhoneValidationRemainingAttempts } from 'features/identityCheck/api/usePhoneValidationRemainingAttempts' import { IconRetryStep } from 'features/identityCheck/components/IconRetryStep' @@ -40,7 +40,7 @@ export const useStepperInfo = (): StepperInfo => { const { remainingAttempts } = usePhoneValidationRemainingAttempts() const { data } = useGetStepperInfo() - const { data: settings } = useSettingsContext() + const { data: settings } = useSettings() if (!data) { return { diff --git a/src/features/identityCheck/pages/identification/educonnect/EduConnectForm.web.test.tsx b/src/features/identityCheck/pages/identification/educonnect/EduConnectForm.web.test.tsx index 9cf082e2902..61d83861c92 100644 --- a/src/features/identityCheck/pages/identification/educonnect/EduConnectForm.web.test.tsx +++ b/src/features/identityCheck/pages/identification/educonnect/EduConnectForm.web.test.tsx @@ -1,6 +1,7 @@ import React from 'react' import * as useEduConnectLoginAPI from 'features/identityCheck/api/useEduConnectLogin' +import { mockSettings } from 'tests/mockSettings' import { checkAccessibilityFor, fireEvent, render, screen } from 'tests/utils/web' import { EduConnectForm } from './EduConnectForm' @@ -14,6 +15,7 @@ jest.spyOn(useEduConnectLoginAPI, 'useEduConnectLogin').mockReturnValue({ jest.mock('libs/firebase/analytics/analytics') jest.mock('libs/firebase/remoteConfig/remoteConfig.services') jest.mock('ui/theme/customFocusOutline/customFocusOutline') +mockSettings() describe('', () => { it('should render EduConnectForm', () => { diff --git a/src/features/identityCheck/pages/identification/ubble/ExpiredOrLostID.web.test.tsx b/src/features/identityCheck/pages/identification/ubble/ExpiredOrLostID.web.test.tsx index 45054929e03..9340399df97 100644 --- a/src/features/identityCheck/pages/identification/ubble/ExpiredOrLostID.web.test.tsx +++ b/src/features/identityCheck/pages/identification/ubble/ExpiredOrLostID.web.test.tsx @@ -1,11 +1,13 @@ import React from 'react' +import { mockSettings } from 'tests/mockSettings' import { checkAccessibilityFor, render } from 'tests/utils/web' import { ExpiredOrLostID } from './ExpiredOrLostID' jest.mock('libs/firebase/analytics/analytics') jest.mock('libs/firebase/remoteConfig/remoteConfig.services') +mockSettings() describe('', () => { describe('Accessibility', () => { diff --git a/src/features/identityCheck/pages/profile/SetAddress.native.test.tsx b/src/features/identityCheck/pages/profile/SetAddress.native.test.tsx index cee23f74652..56e8809a0c9 100644 --- a/src/features/identityCheck/pages/profile/SetAddress.native.test.tsx +++ b/src/features/identityCheck/pages/profile/SetAddress.native.test.tsx @@ -3,7 +3,6 @@ import React from 'react' import { navigate } from '__mocks__/@react-navigation/native' import { SettingsResponse } from 'api/gen' -import { SettingsWrapper } from 'features/auth/context/SettingsContext' import { defaultSettings } from 'features/auth/fixtures/fixtures' import { SetAddress } from 'features/identityCheck/pages/profile/SetAddress' import { analytics } from 'libs/analytics/provider' @@ -11,6 +10,7 @@ import * as useNetInfoContextDefault from 'libs/network/NetInfoWrapper' import { mockedSuggestedPlaces } from 'libs/place/fixtures/mockedSuggestedPlaces' import { Properties } from 'libs/place/types' import { storage } from 'libs/storage' +import { mockSettings } from 'tests/mockSettings' import { mockServer } from 'tests/mswServer' import { reactQueryProviderHOC } from 'tests/reactQueryProviderHOC' import { fireEvent, render, waitFor, screen } from 'tests/utils' @@ -18,6 +18,8 @@ import { SnackBarHelperSettings } from 'ui/components/snackBar/types' const QUERY_ADDRESS = '1 rue Poissonnière' +mockSettings() + const mockShowErrorSnackBar = jest.fn() jest.mock('ui/components/snackBar/SnackBarContext', () => ({ useSnackBarContext: () => ({ @@ -101,6 +103,7 @@ describe('', () => { }) it('should log analytics on press Continuer', async () => { + mockSettings({ idCheckAddressAutocompletion: false }) renderSetAddress() const input = screen.getByPlaceholderText('Ex\u00a0: 34 avenue de l’Opéra') @@ -108,18 +111,12 @@ describe('', () => { fireEvent.press(screen.getByText('Continuer')) - await screen.findByText('Recherche et sélectionne ton adresse') + await screen.findByText('Entre ton adresse') await waitFor(() => expect(analytics.logSetAddressClicked).toHaveBeenCalledTimes(1)) }) }) function renderSetAddress() { - return render( - reactQueryProviderHOC( - - - - ) - ) + return render(reactQueryProviderHOC()) } diff --git a/src/features/identityCheck/pages/profile/SetAddress.tsx b/src/features/identityCheck/pages/profile/SetAddress.tsx index ba8beac132c..8f21ba41748 100644 --- a/src/features/identityCheck/pages/profile/SetAddress.tsx +++ b/src/features/identityCheck/pages/profile/SetAddress.tsx @@ -5,7 +5,7 @@ import { Keyboard, Platform } from 'react-native' import styled from 'styled-components/native' import { v4 as uuidv4 } from 'uuid' -import { useSettingsContext } from 'features/auth/context/SettingsContext' +import { useSettings } from 'features/auth/context/useSettings' import { AddressOption } from 'features/identityCheck/components/AddressOption' import { CenteredTitle } from 'features/identityCheck/components/CenteredTitle' import { PageWithHeader } from 'features/identityCheck/components/layout/PageWithHeader' @@ -32,7 +32,7 @@ const snackbarMessage = const exception = 'Failed to fetch data from API: https://api-adresse.data.gouv.fr/search' export const SetAddress = () => { - const { data: settings } = useSettingsContext() + const { data: settings } = useSettings() const storedAddress = useAddress() const storedCity = useCity() const { setAddress: setStoreAddress } = addressActions diff --git a/src/features/identityCheck/pages/profile/SetAddress.web.test.tsx b/src/features/identityCheck/pages/profile/SetAddress.web.test.tsx index 6baa6456e85..95e845f8180 100644 --- a/src/features/identityCheck/pages/profile/SetAddress.web.test.tsx +++ b/src/features/identityCheck/pages/profile/SetAddress.web.test.tsx @@ -1,6 +1,7 @@ import React from 'react' import { SetAddress } from 'features/identityCheck/pages/profile/SetAddress' +import { mockSettings } from 'tests/mockSettings' import { reactQueryProviderHOC } from 'tests/reactQueryProviderHOC' import { checkAccessibilityFor, render, screen, waitFor } from 'tests/utils/web' @@ -11,6 +12,7 @@ jest.mock('uuid', () => ({ jest.mock('features/identityCheck/context/SubscriptionContextProvider') jest.mock('ui/theme/customFocusOutline/customFocusOutline') +mockSettings() describe('', () => { it('should render correctly', () => { diff --git a/src/features/identityCheck/pages/profile/SetName.web.test.tsx b/src/features/identityCheck/pages/profile/SetName.web.test.tsx index 26e3005e94c..b6fd5f315f5 100644 --- a/src/features/identityCheck/pages/profile/SetName.web.test.tsx +++ b/src/features/identityCheck/pages/profile/SetName.web.test.tsx @@ -1,12 +1,14 @@ import React from 'react' import { initialSubscriptionState as mockState } from 'features/identityCheck/context/reducer' +import { mockSettings } from 'tests/mockSettings' import { reactQueryProviderHOC } from 'tests/reactQueryProviderHOC' import { render, checkAccessibilityFor, waitFor, screen } from 'tests/utils/web' import { SetName } from './SetName' jest.mock('libs/subcategories/useSubcategory') +mockSettings() jest.mock('uuid', () => ({ v1: jest.fn(), diff --git a/src/features/navigation/services.web.test.tsx b/src/features/navigation/services.web.test.tsx index b0adb820cfe..97c713121a7 100644 --- a/src/features/navigation/services.web.test.tsx +++ b/src/features/navigation/services.web.test.tsx @@ -4,6 +4,7 @@ import { createStackNavigator } from '@react-navigation/stack' import React from 'react' import { analytics } from 'libs/analytics/provider' +import { mockSettings } from 'tests/mockSettings' import { act, render } from 'tests/utils/web' import { onNavigationStateChange } from './services' @@ -17,6 +18,8 @@ jest.mock('react-native-safe-area-context', () => ({ useSafeAreaInsets: () => ({ bottom: 16, right: 16, left: 16, top: 16 }), })) +mockSettings() + describe('onNavigationStateChange()', () => { it('should log screen view on navigation change', async () => { // Waiting for React Navigation to fix this issue: diff --git a/src/features/offer/components/OfferContent/OfferContent.web.test.tsx b/src/features/offer/components/OfferContent/OfferContent.web.test.tsx index c0dddb69665..2fe029acb74 100644 --- a/src/features/offer/components/OfferContent/OfferContent.web.test.tsx +++ b/src/features/offer/components/OfferContent/OfferContent.web.test.tsx @@ -12,6 +12,7 @@ import { SuggestedPlace } from 'libs/place/types' import { subcategoriesDataTest } from 'libs/subcategories/fixtures/subcategoriesResponse' import { PLACEHOLDER_DATA } from 'libs/subcategories/placeholderData' import { mockAuthContextWithoutUser } from 'tests/AuthContextUtils' +import { mockSettings } from 'tests/mockSettings' import { mockServer } from 'tests/mswServer' import { reactQueryProviderHOC } from 'tests/reactQueryProviderHOC' import { render, screen, waitFor, userEvent } from 'tests/utils/web' @@ -20,6 +21,7 @@ import * as useModalAPI from 'ui/components/modals/useModal' import { OfferContent } from './OfferContent.web' jest.mock('libs/firebase/remoteConfig/remoteConfig.services') +mockSettings() const mockShowModal = jest.fn() jest.spyOn(useModalAPI, 'useModal').mockReturnValue({ diff --git a/src/features/offer/components/OfferHeader/OfferHeader.native.test.tsx b/src/features/offer/components/OfferHeader/OfferHeader.native.test.tsx index 5d5159162ac..d3d8b646764 100644 --- a/src/features/offer/components/OfferHeader/OfferHeader.native.test.tsx +++ b/src/features/offer/components/OfferHeader/OfferHeader.native.test.tsx @@ -6,6 +6,7 @@ import { paginatedFavoritesResponseSnap } from 'features/favorites/fixtures/pagi import * as useGoBack from 'features/navigation/useGoBack' import { offerResponseSnap } from 'features/offer/fixtures/offerResponse' import { analytics } from 'libs/analytics/provider' +import { mockSettings } from 'tests/mockSettings' import { mockServer } from 'tests/mswServer' import { reactQueryProviderHOC } from 'tests/reactQueryProviderHOC' import { act, fireEvent, render, screen, waitFor } from 'tests/utils' @@ -19,6 +20,7 @@ import { useSnackBarContext } from 'ui/components/snackBar/SnackBarContext' import { OfferHeader } from '../OfferHeader/OfferHeader' +mockSettings() jest.unmock('react-native/Libraries/Animated/createAnimatedComponent') const mockShare = jest.spyOn(Share, 'share').mockImplementation(jest.fn()) diff --git a/src/features/offer/components/OfferImageCarousel/OfferImageCarousel.native.test.tsx b/src/features/offer/components/OfferImageCarousel/OfferImageCarousel.native.test.tsx index 521156fc659..e5c18f40f66 100644 --- a/src/features/offer/components/OfferImageCarousel/OfferImageCarousel.native.test.tsx +++ b/src/features/offer/components/OfferImageCarousel/OfferImageCarousel.native.test.tsx @@ -1,10 +1,13 @@ import React from 'react' import { SharedValue } from 'react-native-reanimated' +import { mockSettings } from 'tests/mockSettings' import { render, screen, userEvent } from 'tests/utils' import { OfferImageCarousel } from './OfferImageCarousel' +mockSettings() + describe('OfferImageCarousel', () => { const user = userEvent.setup() diff --git a/src/features/offer/components/OfferImageCarousel/OfferImageCarousel.web.test.tsx b/src/features/offer/components/OfferImageCarousel/OfferImageCarousel.web.test.tsx index 686d384aaeb..2725ae5f5ad 100644 --- a/src/features/offer/components/OfferImageCarousel/OfferImageCarousel.web.test.tsx +++ b/src/features/offer/components/OfferImageCarousel/OfferImageCarousel.web.test.tsx @@ -1,10 +1,13 @@ import React from 'react' import { SharedValue } from 'react-native-reanimated' +import { mockSettings } from 'tests/mockSettings' import { act, render, screen, userEvent } from 'tests/utils/web' import { OfferImageCarousel } from './OfferImageCarousel' +mockSettings() + describe('OfferImageCarousel', () => { const user = userEvent.setup({ delay: 50 }) diff --git a/src/features/offer/components/OfferImageContainer/OfferImageContainer.native.test.tsx b/src/features/offer/components/OfferImageContainer/OfferImageContainer.native.test.tsx index cc880520e9a..50a548be936 100644 --- a/src/features/offer/components/OfferImageContainer/OfferImageContainer.native.test.tsx +++ b/src/features/offer/components/OfferImageContainer/OfferImageContainer.native.test.tsx @@ -2,9 +2,11 @@ import React from 'react' import { CategoryIdEnum } from 'api/gen' import { OfferImageContainer } from 'features/offer/components/OfferImageContainer/OfferImageContainer' +import { mockSettings } from 'tests/mockSettings' import { render, screen } from 'tests/utils' jest.mock('libs/subcategories/useCategoryId') +mockSettings() describe('', () => { it('should display image inside carousel when offer has only one image with no pagination', () => { diff --git a/src/features/offer/components/OfferImageContainer/OfferImageContainer.web.test.tsx b/src/features/offer/components/OfferImageContainer/OfferImageContainer.web.test.tsx index a48398106ce..f2c4e2c81a2 100644 --- a/src/features/offer/components/OfferImageContainer/OfferImageContainer.web.test.tsx +++ b/src/features/offer/components/OfferImageContainer/OfferImageContainer.web.test.tsx @@ -2,9 +2,11 @@ import React from 'react' import { CategoryIdEnum } from 'api/gen' import { OfferImageContainer } from 'features/offer/components/OfferImageContainer/OfferImageContainer' +import { mockSettings } from 'tests/mockSettings' import { render, screen } from 'tests/utils/web' jest.mock('libs/firebase/remoteConfig/remoteConfig.services') +mockSettings() const mockOnPress = jest.fn() diff --git a/src/features/offer/components/OfferImageWrapper/OfferImageWrapper.native.test.tsx b/src/features/offer/components/OfferImageWrapper/OfferImageWrapper.native.test.tsx index b0f196f1ae0..98a899da977 100644 --- a/src/features/offer/components/OfferImageWrapper/OfferImageWrapper.native.test.tsx +++ b/src/features/offer/components/OfferImageWrapper/OfferImageWrapper.native.test.tsx @@ -2,8 +2,11 @@ import React, { ComponentProps } from 'react' import { OfferBodyImage } from 'features/offer/components/OfferBodyImage' import { OfferImageWrapper } from 'features/offer/components/OfferImageWrapper/OfferImageWrapper' +import { mockSettings } from 'tests/mockSettings' import { render, screen } from 'tests/utils' +mockSettings() + describe('', () => { it('should display image gradient when offer preview feature flag activated and image url defined', () => { renderOfferImageWrapper({ diff --git a/src/features/offer/components/OfferImageWrapper/OfferImageWrapper.web.test.tsx b/src/features/offer/components/OfferImageWrapper/OfferImageWrapper.web.test.tsx index 4d0b44fd005..89047a2c210 100644 --- a/src/features/offer/components/OfferImageWrapper/OfferImageWrapper.web.test.tsx +++ b/src/features/offer/components/OfferImageWrapper/OfferImageWrapper.web.test.tsx @@ -2,9 +2,12 @@ import React, { ComponentProps } from 'react' import { OfferBodyImage } from 'features/offer/components/OfferBodyImage' import { OfferImageWrapper } from 'features/offer/components/OfferImageWrapper/OfferImageWrapper' +import { mockSettings } from 'tests/mockSettings' import { render, screen, waitFor } from 'tests/utils/web' import { theme } from 'theme' +mockSettings() + describe('', () => { it('should apply borderRadius when not in carousel', async () => { renderOfferImageWrapper({ diff --git a/src/features/offer/components/OfferVenueBlock/OfferVenueBlock.native.test.tsx b/src/features/offer/components/OfferVenueBlock/OfferVenueBlock.native.test.tsx index 0587b672f14..2b9d6f7a6bd 100644 --- a/src/features/offer/components/OfferVenueBlock/OfferVenueBlock.native.test.tsx +++ b/src/features/offer/components/OfferVenueBlock/OfferVenueBlock.native.test.tsx @@ -5,10 +5,12 @@ import { useVenueBlock } from 'features/offer/components/OfferVenueBlock/useVenu import { offerResponseSnap } from 'features/offer/fixtures/offerResponse' import { ILocationContext } from 'libs/location' import { LocationMode } from 'libs/location/types' +import { mockSettings } from 'tests/mockSettings' import { userEvent, render, screen } from 'tests/utils' import { OfferVenueBlock } from './OfferVenueBlock' +mockSettings() jest.mock('features/offer/components/OfferVenueBlock/useVenueBlock') const mockOnCopyAddressPress = jest.fn() const mockUseVenueBlock = jest.mocked(useVenueBlock) diff --git a/src/features/offer/pages/Offer/Offer.perf.test.tsx b/src/features/offer/pages/Offer/Offer.perf.test.tsx index e8a6e87b744..94021b6b94c 100644 --- a/src/features/offer/pages/Offer/Offer.perf.test.tsx +++ b/src/features/offer/pages/Offer/Offer.perf.test.tsx @@ -13,6 +13,7 @@ import { import { setFeatureFlags } from 'libs/firebase/firestore/featureFlags/__tests__/setFeatureFlags' import { Network } from 'libs/share/types' import { subcategoriesDataTest } from 'libs/subcategories/fixtures/subcategoriesResponse' +import { mockSettings } from 'tests/mockSettings' import { mockServer } from 'tests/mswServer' import { reactQueryProviderHOC } from 'tests/reactQueryProviderHOC' import { act, measurePerformance, screen } from 'tests/utils' @@ -44,6 +45,8 @@ jest.useFakeTimers() jest.mock('libs/network/NetInfoWrapper') +mockSettings() + useRoute.mockReturnValue({ params: { id: offerResponseSnap.id, diff --git a/src/features/profile/components/BeneficiaryCeilings/BeneficiaryCeilings.native.test.tsx b/src/features/profile/components/BeneficiaryCeilings/BeneficiaryCeilings.native.test.tsx index c60cd713686..2102054f61b 100644 --- a/src/features/profile/components/BeneficiaryCeilings/BeneficiaryCeilings.native.test.tsx +++ b/src/features/profile/components/BeneficiaryCeilings/BeneficiaryCeilings.native.test.tsx @@ -9,6 +9,7 @@ import { } from 'features/profile/fixtures/domainsCredit' import * as ProfileUtils from 'features/profile/helpers/useIsUserUnderageBeneficiary' import { setFeatureFlags } from 'libs/firebase/firestore/featureFlags/__tests__/setFeatureFlags' +import { mockSettings } from 'tests/mockSettings' import { render, screen, waitFor } from 'tests/utils' const mockUseIsUserUnderageBeneficiary = jest @@ -16,6 +17,7 @@ const mockUseIsUserUnderageBeneficiary = jest .mockReturnValue(false) jest.mock('libs/firebase/analytics/analytics') +mockSettings() describe('BeneficiaryCeilings', () => { beforeEach(() => { diff --git a/src/features/profile/components/CitySearchInput/CitySearchInput.native.test.tsx b/src/features/profile/components/CitySearchInput/CitySearchInput.native.test.tsx index 7a6e5737a7e..203f28d0a0e 100644 --- a/src/features/profile/components/CitySearchInput/CitySearchInput.native.test.tsx +++ b/src/features/profile/components/CitySearchInput/CitySearchInput.native.test.tsx @@ -1,10 +1,9 @@ import React from 'react' -import * as SettingsContextAPI from 'features/auth/context/SettingsContext' -import { defaultSettings } from 'features/auth/fixtures/fixtures' import { CitySearchInput } from 'features/profile/components/CitySearchInput/CitySearchInput' import { mockedSuggestedCities } from 'libs/place/fixtures/mockedSuggestedCities' import { CitiesResponse, CITIES_API_URL } from 'libs/place/useCities' +import { mockSettings } from 'tests/mockSettings' import { mockServer } from 'tests/mswServer' import { reactQueryProviderHOC } from 'tests/reactQueryProviderHOC' import { render, screen, userEvent } from 'tests/utils' @@ -19,13 +18,7 @@ jest.useFakeTimers() describe('', () => { beforeEach(() => { - jest.spyOn(SettingsContextAPI, 'useSettingsContext').mockReturnValue({ - data: { - ...defaultSettings, - ineligiblePostalCodes: [NEW_CALEDONIA_NORTHERN_PROVINCE_POSTAL_CODE], - }, - isLoading: false, - }) + mockSettings({ ineligiblePostalCodes: [NEW_CALEDONIA_NORTHERN_PROVINCE_POSTAL_CODE] }) }) it('should display error message when the user enters a valid postal code but no city found', async () => { diff --git a/src/features/profile/components/CitySearchInput/CitySearchInput.tsx b/src/features/profile/components/CitySearchInput/CitySearchInput.tsx index 3791f1748f7..fddd7e35004 100644 --- a/src/features/profile/components/CitySearchInput/CitySearchInput.tsx +++ b/src/features/profile/components/CitySearchInput/CitySearchInput.tsx @@ -7,7 +7,7 @@ import styled from 'styled-components/native' import { v4 as uuidv4 } from 'uuid' import { object, string } from 'yup' -import { useSettingsContext } from 'features/auth/context/SettingsContext' +import { useSettings } from 'features/auth/context/useSettings' import { AddressOption } from 'features/identityCheck/components/AddressOption' import { IdentityCheckError } from 'features/identityCheck/pages/profile/errors' import { AccessibilityRole } from 'libs/accessibilityRole/accessibilityRole' @@ -36,7 +36,7 @@ type PostalCodeForm = { postalCode: string } export const CitySearchInput = ({ city, onCitySelected }: CitySearchInputProps) => { const { showErrorSnackBar } = useSnackBarContext() - const { data: settings } = useSettingsContext() + const { data: settings } = useSettings() const [postalCodeQuery, setPostalCodeQuery] = useState(city?.postalCode ?? '') const [isPostalCodeIneligible, setIsPostalCodeIneligible] = useState(false) const debouncedSetPostalCode = useRef(debounce(setPostalCodeQuery, 500)).current diff --git a/src/features/profile/components/CreditExplanation/CreditExplanation.native.test.tsx b/src/features/profile/components/CreditExplanation/CreditExplanation.native.test.tsx index d5dee38e5d5..a43258b8638 100644 --- a/src/features/profile/components/CreditExplanation/CreditExplanation.native.test.tsx +++ b/src/features/profile/components/CreditExplanation/CreditExplanation.native.test.tsx @@ -1,11 +1,13 @@ import React from 'react' import { navigate } from '__mocks__/@react-navigation/native' -import { setSettings } from 'features/auth/tests/setSettings' import { CreditExplanation } from 'features/profile/components/CreditExplanation/CreditExplanation' import { analytics } from 'libs/analytics/provider' +import { mockSettings } from 'tests/mockSettings' import { act, fireEvent, render, screen } from 'tests/utils' +mockSettings() + describe('', () => { it('should render correctly for expired deposit', () => { render() @@ -37,7 +39,7 @@ describe('', () => { describe('With redirection to tutorial', () => { beforeEach(() => { - setSettings() + mockSettings() }) it('should navigate to tutorial when button is triggered', async () => { @@ -49,7 +51,7 @@ describe('', () => { }) it('should navigate to tutorial CreditV3 when button is triggered and enableCreditV3 is true', async () => { - setSettings({ wipEnableCreditV3: true }) + mockSettings({ wipEnableCreditV3: true }) render() const explanationButton = screen.getByTestId('Comment ça marche\u00a0?') diff --git a/src/features/profile/components/CreditExplanation/CreditExplanation.tsx b/src/features/profile/components/CreditExplanation/CreditExplanation.tsx index cdff4afb1dc..3b597b08661 100644 --- a/src/features/profile/components/CreditExplanation/CreditExplanation.tsx +++ b/src/features/profile/components/CreditExplanation/CreditExplanation.tsx @@ -1,7 +1,7 @@ import React, { FunctionComponent } from 'react' import styled from 'styled-components/native' -import { useSettingsContext } from 'features/auth/context/SettingsContext' +import { useSettings } from 'features/auth/context/useSettings' import { ExpiredCreditModal } from 'features/profile/components/Modals/ExpiredCreditModal' import { TutorialTypes } from 'features/tutorial/enums' import { analytics } from 'libs/analytics/provider' @@ -21,7 +21,7 @@ interface Props { export const CreditExplanation: FunctionComponent = ({ age, isDepositExpired }) => { const { visible, showModal, hideModal } = useModal(false) - const { data: settings } = useSettingsContext() + const { data: settings } = useSettings() const enableCreditV3 = settings?.wipEnableCreditV3 const navigateTo15to18: InternalNavigationProps['navigateTo'] = enableCreditV3 diff --git a/src/features/profile/components/EmptyCredit/EmptyCredit.native.test.tsx b/src/features/profile/components/EmptyCredit/EmptyCredit.native.test.tsx index c5ee7a17c10..76cc46156ba 100644 --- a/src/features/profile/components/EmptyCredit/EmptyCredit.native.test.tsx +++ b/src/features/profile/components/EmptyCredit/EmptyCredit.native.test.tsx @@ -4,8 +4,10 @@ import { navigate } from '__mocks__/@react-navigation/native' import { EmptyCredit } from 'features/profile/components/EmptyCredit/EmptyCredit' import { setFeatureFlags } from 'libs/firebase/firestore/featureFlags/__tests__/setFeatureFlags' import { RemoteStoreFeatureFlags } from 'libs/firebase/firestore/types' +import { mockSettings } from 'tests/mockSettings' import { fireEvent, render, screen } from 'tests/utils' +mockSettings() jest.mock('libs/firebase/remoteConfig/RemoteConfigProvider', () => ({ useRemoteConfigContext: jest .fn() diff --git a/src/features/profile/components/Header/CreditHeader/CreditHeader.native.test.tsx b/src/features/profile/components/Header/CreditHeader/CreditHeader.native.test.tsx index 93d87ec6618..9787045f494 100644 --- a/src/features/profile/components/Header/CreditHeader/CreditHeader.native.test.tsx +++ b/src/features/profile/components/Header/CreditHeader/CreditHeader.native.test.tsx @@ -15,6 +15,7 @@ import * as ProfileUtils from 'features/profile/helpers/useIsUserUnderageBenefic import { formatToSlashedFrenchDate, setDateOneDayEarlier } from 'libs/dates' import { setFeatureFlags } from 'libs/firebase/firestore/featureFlags/__tests__/setFeatureFlags' import { RemoteStoreFeatureFlags } from 'libs/firebase/firestore/types' +import { mockSettings } from 'tests/mockSettings' import { fireEvent, render, screen } from 'tests/utils' jest.mock('features/profile/api/useResetRecreditAmountToShow') @@ -34,6 +35,7 @@ const today = '2023-02-10T21:00:00' const tomorrow = '2023-02-11T21:00:00' jest.mock('libs/firebase/analytics/analytics') +mockSettings() describe('CreditHeader', () => { beforeEach(() => { diff --git a/src/features/profile/components/Header/LoggedOutHeader/LoggedOutHeader.native.test.tsx b/src/features/profile/components/Header/LoggedOutHeader/LoggedOutHeader.native.test.tsx index 6c0d0c55d72..369f36dca61 100644 --- a/src/features/profile/components/Header/LoggedOutHeader/LoggedOutHeader.native.test.tsx +++ b/src/features/profile/components/Header/LoggedOutHeader/LoggedOutHeader.native.test.tsx @@ -1,16 +1,17 @@ import React from 'react' import { navigate } from '__mocks__/@react-navigation/native' -import { setSettings } from 'features/auth/tests/setSettings' import { StepperOrigin } from 'features/navigation/RootNavigator/types' import { analytics } from 'libs/analytics/provider' import { setFeatureFlags } from 'libs/firebase/firestore/featureFlags/__tests__/setFeatureFlags' import { RemoteStoreFeatureFlags } from 'libs/firebase/firestore/types' +import { mockSettings } from 'tests/mockSettings' import { render, userEvent, screen } from 'tests/utils' import { LoggedOutHeader } from './LoggedOutHeader' jest.mock('libs/firebase/analytics/analytics') +mockSettings() const user = userEvent.setup() jest.useFakeTimers() @@ -60,7 +61,7 @@ describe('LoggedOutHeader', () => { describe('when enableCreditV3 activated', () => { beforeEach(() => { - setSettings({ wipEnableCreditV3: true }) + mockSettings({ wipEnableCreditV3: true }) }) it('should display subtitle with credit V3', () => { diff --git a/src/features/profile/components/Header/LoggedOutHeader/LoggedOutHeader.tsx b/src/features/profile/components/Header/LoggedOutHeader/LoggedOutHeader.tsx index 411fce611a3..bae088279a4 100644 --- a/src/features/profile/components/Header/LoggedOutHeader/LoggedOutHeader.tsx +++ b/src/features/profile/components/Header/LoggedOutHeader/LoggedOutHeader.tsx @@ -2,7 +2,7 @@ import React, { FunctionComponent } from 'react' import styled, { useTheme } from 'styled-components/native' import { AuthenticationButton } from 'features/auth/components/AuthenticationButton/AuthenticationButton' -import { useSettingsContext } from 'features/auth/context/SettingsContext' +import { useSettings } from 'features/auth/context/useSettings' import { StepperOrigin } from 'features/navigation/RootNavigator/types' import { HeaderWithGreyContainer } from 'features/profile/components/Header/HeaderWithGreyContainer/HeaderWithGreyContainer' import { analytics } from 'libs/analytics/provider' @@ -23,7 +23,7 @@ const onBeforeNavigate = () => { export const LoggedOutHeader: FunctionComponent = ({ showForceUpdateBanner }) => { const isPassForAllEnabled = useFeatureFlag(RemoteStoreFeatureFlags.ENABLE_PASS_FOR_ALL) - const { data: settings } = useSettingsContext() + const { data: settings } = useSettings() const enableCreditV3 = settings?.wipEnableCreditV3 const subtitle = `Tu as ${enableCreditV3 ? '17 ou 18' : 'entre 15 et 18'} ans\u00a0?` const bodyText = `Identifie-toi pour découvrir des offres culturelles et bénéficier de ton crédit si tu as ${enableCreditV3 ? '17 ou 18' : 'entre 15 et 18'} ans.` diff --git a/src/features/profile/components/Header/ProfileHeader/ProfileHeader.web.test.tsx b/src/features/profile/components/Header/ProfileHeader/ProfileHeader.web.test.tsx index 3921e3110b3..e4837c3df62 100644 --- a/src/features/profile/components/Header/ProfileHeader/ProfileHeader.web.test.tsx +++ b/src/features/profile/components/Header/ProfileHeader/ProfileHeader.web.test.tsx @@ -5,10 +5,12 @@ import { CurrencyEnum, UserProfileResponse, YoungStatusType } from 'api/gen' import { ProfileHeader } from 'features/profile/components/Header/ProfileHeader/ProfileHeader' import { domains_credit_v1 } from 'features/profile/fixtures/domainsCredit' import { setFeatureFlags } from 'libs/firebase/firestore/featureFlags/__tests__/setFeatureFlags' +import { mockSettings } from 'tests/mockSettings' import { render, screen } from 'tests/utils/web' jest.mock('libs/firebase/analytics/analytics') jest.mock('libs/firebase/remoteConfig/remoteConfig.services') +mockSettings() const user: UserProfileResponse = { bookedOffers: {}, diff --git a/src/features/profile/pages/Accessibility/AccessibilityActionPlan.web.test.tsx b/src/features/profile/pages/Accessibility/AccessibilityActionPlan.web.test.tsx index 8b8042a16e5..321a356db88 100644 --- a/src/features/profile/pages/Accessibility/AccessibilityActionPlan.web.test.tsx +++ b/src/features/profile/pages/Accessibility/AccessibilityActionPlan.web.test.tsx @@ -1,5 +1,6 @@ import React from 'react' +import { mockSettings } from 'tests/mockSettings' import { checkAccessibilityFor, render } from 'tests/utils/web' import { AccessibilityActionPlan } from './AccessibilityActionPlan' @@ -14,6 +15,7 @@ jest.mock('react-native/Libraries/Animated/NativeAnimatedHelper') jest.mock('react-native/Libraries/Alert/Alert', () => ({ alert: jest.fn(), })) +mockSettings() const TEST_TIMEOUT_IN_MS = 15000 jest.setTimeout(TEST_TIMEOUT_IN_MS) diff --git a/src/features/profile/pages/Accessibility/AccessibilityDeclarationWeb.web.test.tsx b/src/features/profile/pages/Accessibility/AccessibilityDeclarationWeb.web.test.tsx index 95e648eac6b..b96732d95d6 100644 --- a/src/features/profile/pages/Accessibility/AccessibilityDeclarationWeb.web.test.tsx +++ b/src/features/profile/pages/Accessibility/AccessibilityDeclarationWeb.web.test.tsx @@ -1,11 +1,13 @@ import React from 'react' +import { mockSettings } from 'tests/mockSettings' import { checkAccessibilityFor, render } from 'tests/utils/web' import { AccessibilityDeclarationWeb } from './AccessibilityDeclarationWeb' jest.mock('libs/firebase/analytics/analytics') jest.mock('libs/firebase/remoteConfig/remoteConfig.services') +mockSettings() describe('', () => { describe('Accessibility', () => { diff --git a/src/features/profile/pages/ChangeCity/ChangeCity.web.test.tsx b/src/features/profile/pages/ChangeCity/ChangeCity.web.test.tsx index ca558d951ab..576aec0ec19 100644 --- a/src/features/profile/pages/ChangeCity/ChangeCity.web.test.tsx +++ b/src/features/profile/pages/ChangeCity/ChangeCity.web.test.tsx @@ -1,6 +1,7 @@ import React from 'react' import { ChangeCity } from 'features/profile/pages/ChangeCity/ChangeCity' +import { mockSettings } from 'tests/mockSettings' import { reactQueryProviderHOC } from 'tests/reactQueryProviderHOC' import { checkAccessibilityFor, render, screen, waitFor } from 'tests/utils/web' @@ -12,6 +13,7 @@ jest.mock('uuid', () => ({ jest.mock('libs/firebase/analytics/analytics') jest.mock('libs/firebase/remoteConfig/remoteConfig.services') jest.mock('ui/theme/customFocusOutline/customFocusOutline') +mockSettings() describe('', () => { it('should render correctly', () => { diff --git a/src/features/profile/pages/DeleteProfile/DeactivateProfileSuccess.native.test.tsx b/src/features/profile/pages/DeleteProfile/DeactivateProfileSuccess.native.test.tsx index a49257b0034..89415b0b543 100644 --- a/src/features/profile/pages/DeleteProfile/DeactivateProfileSuccess.native.test.tsx +++ b/src/features/profile/pages/DeleteProfile/DeactivateProfileSuccess.native.test.tsx @@ -2,11 +2,11 @@ import React from 'react' import { navigate } from '__mocks__/@react-navigation/native' import * as LogoutRoutine from 'features/auth/helpers/useLogoutRoutine' -import { setSettings } from 'features/auth/tests/setSettings' import { navigateToHomeConfig } from 'features/navigation/helpers/navigateToHome' import { navigateFromRef } from 'features/navigation/navigationRef' import { StepperOrigin } from 'features/navigation/RootNavigator/types' import { analytics } from 'libs/analytics/provider' +import { mockSettings } from 'tests/mockSettings' import { fireEvent, render, screen, waitFor } from 'tests/utils' import { DeactivateProfileSuccess } from './DeactivateProfileSuccess' @@ -27,7 +27,7 @@ jest.mock('react-native/Libraries/Animated/createAnimatedComponent', () => { describe('DeactivateProfileSuccess component', () => { beforeEach(() => { - setSettings() + mockSettings() }) it('should render delete profile success', () => { diff --git a/src/features/profile/pages/DeleteProfile/DeactivateProfileSuccess.tsx b/src/features/profile/pages/DeleteProfile/DeactivateProfileSuccess.tsx index 73e67eeb513..8f7efb11fb8 100644 --- a/src/features/profile/pages/DeleteProfile/DeactivateProfileSuccess.tsx +++ b/src/features/profile/pages/DeleteProfile/DeactivateProfileSuccess.tsx @@ -1,7 +1,7 @@ import React, { useEffect } from 'react' import styled from 'styled-components/native' -import { useSettingsContext } from 'features/auth/context/SettingsContext' +import { useSettings } from 'features/auth/context/useSettings' import { useLogoutRoutine } from 'features/auth/helpers/useLogoutRoutine' import { navigateToHomeConfig } from 'features/navigation/helpers/navigateToHome' import { StepperOrigin } from 'features/navigation/RootNavigator/types' @@ -17,7 +17,7 @@ import { Spacer, TypoDS } from 'ui/theme' export function DeactivateProfileSuccess() { const signOut = useLogoutRoutine() - const { data: settings } = useSettingsContext() + const { data: settings } = useSettings() const reactivationLimit = settings?.accountUnsuspensionLimit useEffect(() => { diff --git a/src/features/profile/pages/DeleteProfileReason/DeleteProfileReason.native.test.tsx b/src/features/profile/pages/DeleteProfileReason/DeleteProfileReason.native.test.tsx index c1894070256..4507e723e5e 100644 --- a/src/features/profile/pages/DeleteProfileReason/DeleteProfileReason.native.test.tsx +++ b/src/features/profile/pages/DeleteProfileReason/DeleteProfileReason.native.test.tsx @@ -2,11 +2,11 @@ import React from 'react' import { navigate } from '__mocks__/@react-navigation/native' import * as LogoutRoutine from 'features/auth/helpers/useLogoutRoutine' -import { setSettings } from 'features/auth/tests/setSettings' import { DeleteProfileReason } from 'features/profile/pages/DeleteProfileReason/DeleteProfileReason' import { beneficiaryUser, nonBeneficiaryUser } from 'fixtures/user' import { analytics } from 'libs/analytics/provider' import { mockAuthContextWithUser } from 'tests/AuthContextUtils' +import { mockSettings } from 'tests/mockSettings' import { fireEvent, render, screen, waitFor } from 'tests/utils' jest.mock('features/navigation/helpers/navigateToHome') @@ -30,7 +30,7 @@ jest.useFakeTimers() describe('', () => { beforeEach(() => { jest.setSystemTime(new Date('2020-01-01')) - setSettings() + mockSettings() }) it('should match snapshot', () => { diff --git a/src/features/profile/pages/Profile.native.test.tsx b/src/features/profile/pages/Profile.native.test.tsx index 9c1bb3bddda..bafb8fbb9a1 100644 --- a/src/features/profile/pages/Profile.native.test.tsx +++ b/src/features/profile/pages/Profile.native.test.tsx @@ -6,7 +6,6 @@ import { navigate } from '__mocks__/@react-navigation/native' import { SubscriptionStepperResponseV2 } from 'api/gen' import * as Auth from 'features/auth/context/AuthContext' import { CURRENT_DATE } from 'features/auth/fixtures/fixtures' -import { setSettings } from 'features/auth/tests/setSettings' import { FavoritesWrapper } from 'features/favorites/context/FavoritesWrapper' import { initialFavoritesState } from 'features/favorites/context/reducer' import { subscriptionStepperFixture } from 'features/identityCheck/fixtures/subscriptionStepperFixture' @@ -28,6 +27,7 @@ import { GeolocPositionError, } from 'libs/location' import * as useNetInfoContextDefault from 'libs/network/NetInfoWrapper' +import { mockSettings } from 'tests/mockSettings' import { mockServer } from 'tests/mswServer' import { reactQueryProviderHOC } from 'tests/reactQueryProviderHOC' import { @@ -298,7 +298,7 @@ describe('Profile component', () => { describe('help section', () => { beforeEach(() => { - setSettings() + mockSettings() }) it('should navigate to EligibleUserAgeSelection when tutorial row is clicked and user is not logged in', async () => { @@ -324,7 +324,7 @@ describe('Profile component', () => { }) it('should navigate to Age Information V3 when tutorial row is clicked, user is logged in and enableCreditV3 is true', async () => { - setSettings({ wipEnableCreditV3: true }) + mockSettings({ wipEnableCreditV3: true }) mockdate.set(CURRENT_DATE) renderProfile() diff --git a/src/features/profile/pages/Profile.tsx b/src/features/profile/pages/Profile.tsx index 71114c0aeda..a737a94ae63 100644 --- a/src/features/profile/pages/Profile.tsx +++ b/src/features/profile/pages/Profile.tsx @@ -5,7 +5,7 @@ import styled from 'styled-components/native' import { v4 as uuidv4 } from 'uuid' import { useAuthContext } from 'features/auth/context/AuthContext' -import { useSettingsContext } from 'features/auth/context/SettingsContext' +import { useSettings } from 'features/auth/context/useSettings' import { useLogoutRoutine } from 'features/auth/helpers/useLogoutRoutine' import { useFavoritesState } from 'features/favorites/context/FavoritesWrapper' import { ProfileHeader } from 'features/profile/components/Header/ProfileHeader/ProfileHeader' @@ -65,7 +65,7 @@ const OnlineProfile: React.FC = () => { const { dispatch: favoritesDispatch } = useFavoritesState() const { isLoggedIn, user } = useAuthContext() - const { data: settings } = useSettingsContext() + const { data: settings } = useSettings() const enableCreditV3 = settings?.wipEnableCreditV3 const signOut = useLogoutRoutine() const version = useVersion() diff --git a/src/features/profile/pages/Profile.web.test.tsx b/src/features/profile/pages/Profile.web.test.tsx index 7b4bb2ba092..f47dc1bedbb 100644 --- a/src/features/profile/pages/Profile.web.test.tsx +++ b/src/features/profile/pages/Profile.web.test.tsx @@ -1,7 +1,7 @@ import React from 'react' -import { setSettings } from 'features/auth/tests/setSettings' import { setFeatureFlags } from 'libs/firebase/firestore/featureFlags/__tests__/setFeatureFlags' +import { mockSettings } from 'tests/mockSettings' import { reactQueryProviderHOC } from 'tests/reactQueryProviderHOC' import { checkAccessibilityFor, render, screen } from 'tests/utils/web' import * as useVersion from 'ui/hooks/useVersion.web' @@ -14,6 +14,7 @@ jest.mock('features/favorites/context/FavoritesWrapper') jest.mock('libs/firebase/analytics/analytics') jest.mock('ui/theme/customFocusOutline/customFocusOutline') +mockSettings() jest.spyOn(useVersion, 'useVersion').mockReturnValue('Version\u00A01.10.5') @@ -65,7 +66,7 @@ describe('', () => { describe('if enableCreditV3 is true', () => { beforeEach(() => { - setSettings({ wipEnableCreditV3: true }) + mockSettings({ wipEnableCreditV3: true }) }) it('should see "17 ou 18"', async () => { @@ -83,7 +84,7 @@ describe('', () => { describe('if enableCreditV3 is false', () => { beforeEach(() => { - setSettings() + mockSettings() }) it('should see "15 et 18"', async () => { diff --git a/src/features/reactions/components/ReactionChoiceModalBodyWithRedirection/ReactionChoiceModalBodyWithRedirection.native.test.tsx b/src/features/reactions/components/ReactionChoiceModalBodyWithRedirection/ReactionChoiceModalBodyWithRedirection.native.test.tsx index 7032aa14859..788e85cd9d0 100644 --- a/src/features/reactions/components/ReactionChoiceModalBodyWithRedirection/ReactionChoiceModalBodyWithRedirection.native.test.tsx +++ b/src/features/reactions/components/ReactionChoiceModalBodyWithRedirection/ReactionChoiceModalBodyWithRedirection.native.test.tsx @@ -2,8 +2,11 @@ import React from 'react' import { CategoryIdEnum } from 'api/gen' import { ReactionChoiceModalBodyWithRedirection } from 'features/reactions/components/ReactionChoiceModalBodyWithRedirection/ReactionChoiceModalBodyWithRedirection' +import { mockSettings } from 'tests/mockSettings' import { render, screen } from 'tests/utils' +mockSettings() + describe('ReactionChoiceModalBodyWithRedirection', () => { it('should display image container when there is at least one offer booked with an image', () => { render( diff --git a/src/features/search/api/useSearchResults/useSearchResults.native.test.ts b/src/features/search/api/useSearchResults/useSearchResults.native.test.ts index 441a8451272..6fae389e2a1 100644 --- a/src/features/search/api/useSearchResults/useSearchResults.native.test.ts +++ b/src/features/search/api/useSearchResults/useSearchResults.native.test.ts @@ -19,12 +19,14 @@ import { } from 'libs/algolia/fixtures/algoliaFixtures' import { AlgoliaVenue } from 'libs/algolia/types' import { GeoCoordinates, GeolocPermissionState, GeolocationError } from 'libs/location' +import { mockSettings } from 'tests/mockSettings' import { reactQueryProviderHOC } from 'tests/reactQueryProviderHOC' import { act, renderHook, waitFor } from 'tests/utils' const { multipleQueries } = algoliasearch() jest.mock('libs/firebase/analytics/analytics') +mockSettings() const DEFAULT_POSITION = { latitude: 66, longitude: 66 } as GeoCoordinates | null const mockPositionError = null as GeolocationError | null diff --git a/src/features/search/components/SearchBox/SearchBox.native.test.tsx b/src/features/search/components/SearchBox/SearchBox.native.test.tsx index fcb2791bd22..8a5efe3ba43 100644 --- a/src/features/search/components/SearchBox/SearchBox.native.test.tsx +++ b/src/features/search/components/SearchBox/SearchBox.native.test.tsx @@ -3,7 +3,6 @@ import { v4 as uuidv4 } from 'uuid' import { navigate, useRoute } from '__mocks__/@react-navigation/native' import { SearchGroupNameEnumv2 } from 'api/gen' -import { setSettings } from 'features/auth/tests/setSettings' import { navigationRef } from 'features/navigation/navigationRef' import * as useGoBack from 'features/navigation/useGoBack' import { initialSearchState } from 'features/search/context/reducer' @@ -17,6 +16,7 @@ import * as useRemoteConfigContextModule from 'libs/firebase/remoteConfig/Remote import { GeoCoordinates, Position } from 'libs/location' import { LocationLabel, LocationMode } from 'libs/location/types' import { mockedSuggestedVenue } from 'libs/venue/fixtures/mockedSuggestedVenues' +import { mockSettings } from 'tests/mockSettings' import { act, render, screen, userEvent } from 'tests/utils' import { SNACK_BAR_TIME_OUT } from 'ui/components/snackBar/SnackBarContext' import { SnackBarHelperSettings } from 'ui/components/snackBar/types' @@ -37,6 +37,7 @@ jest.mock('ui/components/snackBar/SnackBarContext', () => ({ showErrorSnackBar: jest.fn((props: SnackBarHelperSettings) => mockShowErrorSnackBar(props)), }), })) +mockSettings() const queryWithMoreThan150characters = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam non aliquet quam, at ultrices purus. Morbi velit orci, tincidunt sed erat sed efficitur.' @@ -261,7 +262,7 @@ describe('SearchBox component', () => { describe('Without autocomplete', () => { beforeAll(() => { - setSettings({ appEnableAutocomplete: false }) + mockSettings({ appEnableAutocomplete: false }) }) it('should stay on the current view when focusing search input and being on the %s view', async () => { @@ -324,11 +325,11 @@ describe('SearchBox component', () => { describe('With autocomplete', () => { beforeAll(() => { - setSettings({ appEnableAutocomplete: true }) + mockSettings({ appEnableAutocomplete: true }) }) afterAll(() => { - setSettings() + mockSettings() }) it('should unfocus from suggestion when being focus on the suggestions and press back button', async () => { diff --git a/src/features/search/components/SearchBox/SearchBox.tsx b/src/features/search/components/SearchBox/SearchBox.tsx index 2f8aa7d2ad7..3ac9db94bd0 100644 --- a/src/features/search/components/SearchBox/SearchBox.tsx +++ b/src/features/search/components/SearchBox/SearchBox.tsx @@ -14,7 +14,7 @@ import { v4 as uuidv4 } from 'uuid' import { SearchGroupNameEnumv2 } from 'api/gen' import { defaultDisabilitiesProperties } from 'features/accessibility/context/AccessibilityFiltersWrapper' -import { useSettingsContext } from 'features/auth/context/SettingsContext' +import { useSettings } from 'features/auth/context/useSettings' import { homeNavConfig } from 'features/navigation/TabBar/helpers' import { useGoBack } from 'features/navigation/useGoBack' import { HiddenSuggestionsButton } from 'features/search/components/Buttons/HiddenSuggestionsButton' @@ -78,7 +78,7 @@ export const SearchBox: React.FunctionComponent = ({ const debounceSetAutocompleteQuery = useRef( debounce(setAutocompleteQuery, SEARCH_DEBOUNCE_MS) ).current - const { data: appSettings } = useSettingsContext() + const { data: appSettings } = useSettings() const appEnableAutocomplete = appSettings?.appEnableAutocomplete const setQuery = useCallback( diff --git a/src/features/search/components/SearchHeader/SearchHeader.native.test.tsx b/src/features/search/components/SearchHeader/SearchHeader.native.test.tsx index 73d8da1200c..586e9bd927b 100644 --- a/src/features/search/components/SearchHeader/SearchHeader.native.test.tsx +++ b/src/features/search/components/SearchHeader/SearchHeader.native.test.tsx @@ -1,12 +1,12 @@ import React from 'react' import { v4 as uuidv4 } from 'uuid' -import { setSettings } from 'features/auth/tests/setSettings' import { SearchHeader } from 'features/search/components/SearchHeader/SearchHeader' import { initialSearchState } from 'features/search/context/reducer' import * as useFilterCountAPI from 'features/search/helpers/useFilterCount/useFilterCount' import { setFeatureFlags } from 'libs/firebase/firestore/featureFlags/__tests__/setFeatureFlags' import { LocationLabel } from 'libs/location/types' +import { mockSettings } from 'tests/mockSettings' import { render, screen, waitFor, within } from 'tests/utils' jest.mock('libs/firebase/analytics/analytics') @@ -55,7 +55,7 @@ jest.mock('features/navigation/TabBar/routes') describe('SearchHeader component', () => { beforeEach(() => { - setSettings() + mockSettings() setFeatureFlags() }) diff --git a/src/features/search/components/SearchHeader/SearchHeader.web.test.tsx b/src/features/search/components/SearchHeader/SearchHeader.web.test.tsx index f656c995519..d86add5eee1 100644 --- a/src/features/search/components/SearchHeader/SearchHeader.web.test.tsx +++ b/src/features/search/components/SearchHeader/SearchHeader.web.test.tsx @@ -5,6 +5,7 @@ import { v4 as uuidv4 } from 'uuid' import { initialSearchState } from 'features/search/context/reducer' import { ISearchContext } from 'features/search/context/SearchWrapper' import { setFeatureFlags } from 'libs/firebase/firestore/featureFlags/__tests__/setFeatureFlags' +import { mockSettings } from 'tests/mockSettings' import { act, render, screen, waitFor } from 'tests/utils/web' import { SearchHeader } from './SearchHeader' @@ -40,6 +41,8 @@ jest.mock('libs/firebase/analytics/analytics') jest.mock('libs/firebase/remoteConfig/remoteConfig.services') jest.mock('features/navigation/TabBar/routes') +mockSettings() + describe('SearchHeader component', () => { beforeEach(() => { setFeatureFlags() diff --git a/src/features/search/components/SearchListHeader/SearchListHeader.native.test.tsx b/src/features/search/components/SearchListHeader/SearchListHeader.native.test.tsx index 9e0e8ca31a2..3c258f17b73 100644 --- a/src/features/search/components/SearchListHeader/SearchListHeader.native.test.tsx +++ b/src/features/search/components/SearchListHeader/SearchListHeader.native.test.tsx @@ -17,10 +17,13 @@ import { RemoteStoreFeatureFlags } from 'libs/firebase/firestore/types' import { GeoCoordinates } from 'libs/location' import { ILocationContext, LocationMode } from 'libs/location/types' import { SuggestedPlace } from 'libs/place/types' +import { mockSettings } from 'tests/mockSettings' import { act, render, screen } from 'tests/utils' import { SearchListHeader } from './SearchListHeader' +mockSettings() + const searchId = uuidv4() const mockUsePreviousRoute: jest.Mock | null> = usePreviousRoute diff --git a/src/features/search/components/SearchListHeader/SearchListHeader.web.test.tsx b/src/features/search/components/SearchListHeader/SearchListHeader.web.test.tsx index 7a3f45b9f24..ac80ec5d910 100644 --- a/src/features/search/components/SearchListHeader/SearchListHeader.web.test.tsx +++ b/src/features/search/components/SearchListHeader/SearchListHeader.web.test.tsx @@ -11,6 +11,7 @@ import { RemoteStoreFeatureFlags } from 'libs/firebase/firestore/types' import { GeoCoordinates } from 'libs/location' import { ILocationContext, LocationMode } from 'libs/location/types' import { SuggestedPlace } from 'libs/place/types' +import { mockSettings } from 'tests/mockSettings' import { render, screen } from 'tests/utils/web' const searchId = uuidv4() @@ -26,6 +27,8 @@ jest.mock('libs/location/LocationWrapper', () => ({ useLocation: () => mockUseLocation(), })) +mockSettings() + const kourou: SuggestedPlace = { label: 'Kourou', info: 'Guyane', diff --git a/src/features/search/components/SearchResultsContent/SearchResultsContent.native.test.tsx b/src/features/search/components/SearchResultsContent/SearchResultsContent.native.test.tsx index 79485b41006..cf6542796ab 100644 --- a/src/features/search/components/SearchResultsContent/SearchResultsContent.native.test.tsx +++ b/src/features/search/components/SearchResultsContent/SearchResultsContent.native.test.tsx @@ -24,6 +24,7 @@ import { SuggestedPlace } from 'libs/place/types' import { mockedSuggestedVenue } from 'libs/venue/fixtures/mockedSuggestedVenues' import { Offer } from 'shared/offer/types' import { mockAuthContextWithUser, mockAuthContextWithoutUser } from 'tests/AuthContextUtils' +import { mockSettings } from 'tests/mockSettings' import { reactQueryProviderHOC } from 'tests/reactQueryProviderHOC' import { act, render, screen, userEvent, waitFor } from 'tests/utils' import { theme } from 'theme' @@ -39,6 +40,8 @@ jest.mock('features/search/context/SearchWrapper', () => ({ useSearch: () => mockUseSearch(), })) +mockSettings() + jest.mock('features/venueMap/useGetAllVenues') const mockUseGetAllVenues = useGetAllVenues as jest.Mock diff --git a/src/features/search/components/SearchVenueItems/SearchVenueItem.native.test.tsx b/src/features/search/components/SearchVenueItems/SearchVenueItem.native.test.tsx index 1a4160d3cb6..a9cdb7af56f 100644 --- a/src/features/search/components/SearchVenueItems/SearchVenueItem.native.test.tsx +++ b/src/features/search/components/SearchVenueItems/SearchVenueItem.native.test.tsx @@ -7,6 +7,7 @@ import { AlgoliaVenue, LocationMode } from 'libs/algolia/types' import { analytics } from 'libs/analytics/provider' import { ILocationContext } from 'libs/location' import { SuggestedPlace } from 'libs/place/types' +import { mockSettings } from 'tests/mockSettings' import { userEvent, render, screen } from 'tests/utils' import { SearchVenueItem } from './SearchVenueItem' @@ -71,6 +72,7 @@ const MUNICIPALITY_AROUND_PLACE_POSITION = { geolocPosition: undefined, } +mockSettings() const mockUseLocation = jest.fn((): Partial => EVERYWHERE_USER_POSITION) jest.mock('libs/location', () => ({ useLocation: () => mockUseLocation(), diff --git a/src/features/search/components/VenuePlaylist/VenuePlaylist.native.test.tsx b/src/features/search/components/VenuePlaylist/VenuePlaylist.native.test.tsx index 92bc83c4601..68dcbba8c57 100644 --- a/src/features/search/components/VenuePlaylist/VenuePlaylist.native.test.tsx +++ b/src/features/search/components/VenuePlaylist/VenuePlaylist.native.test.tsx @@ -10,9 +10,11 @@ import { venueTypeCodeActions } from 'features/venueMap/store/venueTypeCodeStore import { analytics } from 'libs/analytics/provider' import { setFeatureFlags } from 'libs/firebase/firestore/featureFlags/__tests__/setFeatureFlags' import { RemoteStoreFeatureFlags } from 'libs/firebase/firestore/types' +import { mockSettings } from 'tests/mockSettings' import { render, screen, userEvent } from 'tests/utils' import * as useModalAPI from 'ui/components/modals/useModal' +mockSettings() const searchId = uuidv4() const mockUseSearch = jest.fn(() => ({ searchState: { ...initialSearchState, searchId }, diff --git a/src/features/search/components/VenuePlaylist/VenuePlaylist.web.test.tsx b/src/features/search/components/VenuePlaylist/VenuePlaylist.web.test.tsx index 7fc847406a0..49659e95ba0 100644 --- a/src/features/search/components/VenuePlaylist/VenuePlaylist.web.test.tsx +++ b/src/features/search/components/VenuePlaylist/VenuePlaylist.web.test.tsx @@ -6,6 +6,7 @@ import { initialSearchState } from 'features/search/context/reducer' import { mockAlgoliaVenues } from 'features/search/fixtures/mockAlgoliaVenues' import { setFeatureFlags } from 'libs/firebase/firestore/featureFlags/__tests__/setFeatureFlags' import { RemoteStoreFeatureFlags } from 'libs/firebase/firestore/types' +import { mockSettings } from 'tests/mockSettings' import { render, screen } from 'tests/utils/web' const searchId = uuidv4() @@ -21,6 +22,8 @@ jest.mock('react-native-safe-area-context', () => ({ useSafeAreaInsets: () => ({ bottom: 16, right: 16, left: 16, top: 16 }), })) +mockSettings() + jest.mock('libs/firebase/remoteConfig/remoteConfig.services') describe('', () => { diff --git a/src/features/search/components/sections/Price/Price.native.test.tsx b/src/features/search/components/sections/Price/Price.native.test.tsx index 9402b227987..6c9d0d864af 100644 --- a/src/features/search/components/sections/Price/Price.native.test.tsx +++ b/src/features/search/components/sections/Price/Price.native.test.tsx @@ -5,11 +5,13 @@ import { initialSearchState } from 'features/search/context/reducer' import { setFeatureFlags } from 'libs/firebase/firestore/featureFlags/__tests__/setFeatureFlags' import { Currency } from 'shared/currency/useGetCurrencyToDisplay' import { DEFAULT_PACIFIC_FRANC_TO_EURO_RATE } from 'shared/exchangeRates/defaultRateValues' +import { mockSettings } from 'tests/mockSettings' import { render, screen, userEvent } from 'tests/utils' let mockSearchState = initialSearchState jest.mock('libs/firebase/remoteConfig/remoteConfig.services') +mockSettings() jest.mock('features/search/context/SearchWrapper', () => ({ useSearch: () => ({ diff --git a/src/features/search/pages/SearchLanding/SearchLanding.native.test.tsx b/src/features/search/pages/SearchLanding/SearchLanding.native.test.tsx index 2d1afabb302..a37c88671a3 100644 --- a/src/features/search/pages/SearchLanding/SearchLanding.native.test.tsx +++ b/src/features/search/pages/SearchLanding/SearchLanding.native.test.tsx @@ -18,9 +18,11 @@ import { LocationMode } from 'libs/location/types' import * as useNetInfoContextDefault from 'libs/network/NetInfoWrapper' import { SuggestedPlace } from 'libs/place/types' import { mockedSuggestedVenue } from 'libs/venue/fixtures/mockedSuggestedVenues' +import { mockSettings } from 'tests/mockSettings' import { act, fireEvent, render, screen } from 'tests/utils' const venue = mockedSuggestedVenue +mockSettings() let mockSearchState: SearchState = { ...initialSearchState, diff --git a/src/features/search/pages/SearchLanding/SearchLanding.web.test.tsx b/src/features/search/pages/SearchLanding/SearchLanding.web.test.tsx index 7f6fc35da77..f31115b5596 100644 --- a/src/features/search/pages/SearchLanding/SearchLanding.web.test.tsx +++ b/src/features/search/pages/SearchLanding/SearchLanding.web.test.tsx @@ -9,6 +9,7 @@ import { setFeatureFlags } from 'libs/firebase/firestore/featureFlags/__tests__/ import * as useNetInfoContextDefault from 'libs/network/NetInfoWrapper' import { subcategoriesDataTest } from 'libs/subcategories/fixtures/subcategoriesResponse' import { mockedSuggestedVenue } from 'libs/venue/fixtures/mockedSuggestedVenues' +import { mockSettings } from 'tests/mockSettings' import { mockServer } from 'tests/mswServer' import { reactQueryProviderHOC } from 'tests/reactQueryProviderHOC' import { checkAccessibilityFor, render, screen } from 'tests/utils/web' @@ -16,6 +17,7 @@ import { checkAccessibilityFor, render, screen } from 'tests/utils/web' jest.setTimeout(20000) // to avoid exceeded timeout jest.mock('libs/network/NetInfoWrapper') +mockSettings() const venue = mockedSuggestedVenue diff --git a/src/features/search/pages/SearchResults/SearchResults.native.test.tsx b/src/features/search/pages/SearchResults/SearchResults.native.test.tsx index 7549ee98a8a..fff0c87c5cb 100644 --- a/src/features/search/pages/SearchResults/SearchResults.native.test.tsx +++ b/src/features/search/pages/SearchResults/SearchResults.native.test.tsx @@ -17,9 +17,12 @@ import { LocationMode } from 'libs/location/types' import { useNetInfoContext as useNetInfoContextDefault } from 'libs/network/NetInfoWrapper' import { SuggestedPlace } from 'libs/place/types' import { mockedSuggestedVenue } from 'libs/venue/fixtures/mockedSuggestedVenues' +import { mockSettings } from 'tests/mockSettings' import { reactQueryProviderHOC } from 'tests/reactQueryProviderHOC' import { render, screen, userEvent, waitFor } from 'tests/utils' +mockSettings() + const venue = mockedSuggestedVenue const mockSearchState: SearchState = { diff --git a/src/features/search/pages/SearchResults/SearchResults.web.test.tsx b/src/features/search/pages/SearchResults/SearchResults.web.test.tsx index 48056bee7b2..07035897d5a 100644 --- a/src/features/search/pages/SearchResults/SearchResults.web.test.tsx +++ b/src/features/search/pages/SearchResults/SearchResults.web.test.tsx @@ -12,6 +12,7 @@ import { setFeatureFlags } from 'libs/firebase/firestore/featureFlags/__tests__/ import { RemoteStoreFeatureFlags } from 'libs/firebase/firestore/types' import * as useNetInfoContextDefault from 'libs/network/NetInfoWrapper' import { subcategoriesDataTest } from 'libs/subcategories/fixtures/subcategoriesResponse' +import { mockSettings } from 'tests/mockSettings' import { mockServer } from 'tests/mswServer' import { reactQueryProviderHOC } from 'tests/reactQueryProviderHOC' import { act, checkAccessibilityFor, render } from 'tests/utils/web' @@ -19,6 +20,7 @@ import { act, checkAccessibilityFor, render } from 'tests/utils/web' jest.mock('libs/network/NetInfoWrapper') jest.mock('features/auth/context/AuthContext') +mockSettings() const mockStateDispatch = jest.fn() const initialMockUseSearchResults = { searchState: initialSearchState, dispatch: mockStateDispatch } diff --git a/src/features/search/pages/ThematicSearch/ThematicSearch.web.test.tsx b/src/features/search/pages/ThematicSearch/ThematicSearch.web.test.tsx index 036aecce864..3554ef439bb 100644 --- a/src/features/search/pages/ThematicSearch/ThematicSearch.web.test.tsx +++ b/src/features/search/pages/ThematicSearch/ThematicSearch.web.test.tsx @@ -10,6 +10,7 @@ import { env } from 'libs/environment/env' import { LocationMode } from 'libs/location/types' import * as useNetInfoContextDefault from 'libs/network/NetInfoWrapper' import { PLACEHOLDER_DATA } from 'libs/subcategories/placeholderData' +import { mockSettings } from 'tests/mockSettings' import { mockServer } from 'tests/mswServer' import { reactQueryProviderHOC } from 'tests/reactQueryProviderHOC' import { checkAccessibilityFor, render, screen } from 'tests/utils/web' @@ -17,6 +18,7 @@ import { checkAccessibilityFor, render, screen } from 'tests/utils/web' jest.mock('libs/firebase/analytics/analytics') jest.mock('libs/firebase/remoteConfig/remoteConfig.services') jest.mock('features/navigation/TabBar/routes') +mockSettings() const mockDispatch = jest.fn() diff --git a/src/features/search/pages/ThematicSearch/api/useThematicSearchPlaylists.native.test.ts b/src/features/search/pages/ThematicSearch/api/useThematicSearchPlaylists.native.test.ts index 3a75aa3f214..d25963defc4 100644 --- a/src/features/search/pages/ThematicSearch/api/useThematicSearchPlaylists.native.test.ts +++ b/src/features/search/pages/ThematicSearch/api/useThematicSearchPlaylists.native.test.ts @@ -20,6 +20,7 @@ const defaultThematicSearchOffer = mockBuilder.searchResponseOffer({}) const fetchThematicSearchPlaylistsOffers = jest.fn().mockResolvedValue([defaultThematicSearchOffer]) jest.mock('libs/firebase/analytics/analytics') +jest.mock('features/auth/context/useSettings') const PLAYLISTS_TITLES = ['Titre de la playlist - 1', 'Titre de la playlist - 2'] @@ -60,16 +61,5 @@ it('should only return offers with images', async () => { await act(() => {}) - expect(result).toEqual({ - current: { - playlists: [ - { - title: PLAYLISTS_TITLES[0], - offers: { - hits: [OFFER_WITH_IMAGE], - }, - }, - ], - }, - }) + expect(result.current.playlists[0]?.offers.hits[0]?.objectID).toBe(OFFER_WITH_IMAGE?.objectID) }) diff --git a/src/features/search/pages/modals/PriceModal/PriceModal.native.test.tsx b/src/features/search/pages/modals/PriceModal/PriceModal.native.test.tsx index 0718f39de06..52085a11ecd 100644 --- a/src/features/search/pages/modals/PriceModal/PriceModal.native.test.tsx +++ b/src/features/search/pages/modals/PriceModal/PriceModal.native.test.tsx @@ -9,11 +9,13 @@ import { SearchState } from 'features/search/types' import { beneficiaryUser } from 'fixtures/user' import { setFeatureFlags } from 'libs/firebase/firestore/featureFlags/__tests__/setFeatureFlags' import { convertCentsToEuros } from 'libs/parsers/pricesConversion' +import { mockSettings } from 'tests/mockSettings' import { render, screen, userEvent, waitFor } from 'tests/utils' import { PriceModal, PriceModalProps } from './PriceModal' jest.mock('libs/firebase/remoteConfig/remoteConfig.services') +mockSettings() const searchId = uuidv4() const searchState: SearchState = { ...initialSearchState, searchId } diff --git a/src/features/search/pages/modals/PriceModal/PriceModal.web.test.tsx b/src/features/search/pages/modals/PriceModal/PriceModal.web.test.tsx index a2847aa8bde..aaba5c24176 100644 --- a/src/features/search/pages/modals/PriceModal/PriceModal.web.test.tsx +++ b/src/features/search/pages/modals/PriceModal/PriceModal.web.test.tsx @@ -4,6 +4,7 @@ import { initialSearchState } from 'features/search/context/reducer' import { FilterBehaviour } from 'features/search/enums' import { setFeatureFlags } from 'libs/firebase/firestore/featureFlags/__tests__/setFeatureFlags' import { RemoteStoreFeatureFlags } from 'libs/firebase/firestore/types' +import { mockSettings } from 'tests/mockSettings' import { act, checkAccessibilityFor, render, screen } from 'tests/utils/web' import { PriceModal } from './PriceModal' @@ -11,6 +12,7 @@ import { PriceModal } from './PriceModal' jest.mock('libs/firebase/remoteConfig/remoteConfig.services') jest.mock('features/auth/context/AuthContext') +mockSettings() const mockSearchState = initialSearchState jest.mock('features/search/context/SearchWrapper', () => ({ diff --git a/src/features/subscription/page/OnboardingSubscription.web.test.tsx b/src/features/subscription/page/OnboardingSubscription.web.test.tsx index df6f0e574f5..6112f92e3de 100644 --- a/src/features/subscription/page/OnboardingSubscription.web.test.tsx +++ b/src/features/subscription/page/OnboardingSubscription.web.test.tsx @@ -1,12 +1,14 @@ import React from 'react' import { OnboardingSubscription } from 'features/subscription/page/OnboardingSubscription' +import { mockSettings } from 'tests/mockSettings' import { reactQueryProviderHOC } from 'tests/reactQueryProviderHOC' import { act, checkAccessibilityFor, render, screen } from 'tests/utils/web' jest.mock('libs/firebase/analytics/analytics') jest.mock('libs/firebase/remoteConfig/remoteConfig.services') jest.mock('ui/theme/customFocusOutline/customFocusOutline') +mockSettings() describe('OnboardingSubscription', () => { describe('Accessibility', () => { diff --git a/src/features/tutorial/components/onboarding/OnboardingTimeline.native.test.tsx b/src/features/tutorial/components/onboarding/OnboardingTimeline.native.test.tsx index 28ec0e50a49..4c82751cfa9 100644 --- a/src/features/tutorial/components/onboarding/OnboardingTimeline.native.test.tsx +++ b/src/features/tutorial/components/onboarding/OnboardingTimeline.native.test.tsx @@ -1,14 +1,15 @@ import React from 'react' -import { setSettings } from 'features/auth/tests/setSettings' import { OnboardingTimeline } from 'features/tutorial/components/onboarding/OnboardingTimeline' import { setFeatureFlags } from 'libs/firebase/firestore/featureFlags/__tests__/setFeatureFlags' import { useDepositAmountsByAge } from 'shared/user/useDepositAmountsByAge' +import { mockSettings } from 'tests/mockSettings' import { render, screen } from 'tests/utils' jest.mock('shared/user/useDepositAmountsByAge') const mockUseDepositAmountsByAge = useDepositAmountsByAge as jest.Mock mockUseDepositAmountsByAge.mockReturnValue({ eighteenYearsOldDeposit: '300 €' }) +mockSettings() describe('OnboardingTimeline', () => { describe('when enableCreditV3 not activated', () => { @@ -57,7 +58,7 @@ describe('OnboardingTimeline', () => { describe('when enableCreditV3 activated', () => { beforeEach(() => { - setSettings({ wipEnableCreditV3: true }) + mockSettings({ wipEnableCreditV3: true }) }) it('should not display fifteen years old block', () => { diff --git a/src/features/tutorial/components/onboarding/OnboardingTimeline.tsx b/src/features/tutorial/components/onboarding/OnboardingTimeline.tsx index e2d3a3ef4c2..a2bb4084c90 100644 --- a/src/features/tutorial/components/onboarding/OnboardingTimeline.tsx +++ b/src/features/tutorial/components/onboarding/OnboardingTimeline.tsx @@ -1,7 +1,7 @@ import React, { FunctionComponent } from 'react' import styled from 'styled-components/native' -import { useSettingsContext } from 'features/auth/context/SettingsContext' +import { useSettings } from 'features/auth/context/useSettings' import { CreditComponentProps, CreditTimeline } from 'features/tutorial/components/CreditTimeline' import { TutorialTypes } from 'features/tutorial/enums' import { useDepositAmountsByAge } from 'shared/user/useDepositAmountsByAge' @@ -12,7 +12,7 @@ interface Props { } export const OnboardingTimeline: FunctionComponent = ({ age }) => { - const { data: settings } = useSettingsContext() + const { data: settings } = useSettings() const enableCreditV3 = settings?.wipEnableCreditV3 const stepperPropsMapping = enableCreditV3 ? stepperPropsMappingV2 : stepperPropsMappingV1 diff --git a/src/features/tutorial/components/profileTutorial/EighteenBlockDescription.native.test.tsx b/src/features/tutorial/components/profileTutorial/EighteenBlockDescription.native.test.tsx index d741964fdab..bb8bc6e292a 100644 --- a/src/features/tutorial/components/profileTutorial/EighteenBlockDescription.native.test.tsx +++ b/src/features/tutorial/components/profileTutorial/EighteenBlockDescription.native.test.tsx @@ -4,8 +4,10 @@ import { EighteenBlockDescription } from 'features/tutorial/components/profileTu import { beneficiaryUser, nonBeneficiaryUser } from 'fixtures/user' import { setFeatureFlags } from 'libs/firebase/firestore/featureFlags/__tests__/setFeatureFlags' import { RemoteStoreFeatureFlags } from 'libs/firebase/firestore/types' +import { mockSettings } from 'tests/mockSettings' import { render, screen } from 'tests/utils' +mockSettings() const mockUseAuthContext = jest.fn().mockReturnValue({ isLoggedIn: false, user: undefined }) jest.mock('features/auth/context/AuthContext', () => ({ useAuthContext: () => mockUseAuthContext(), diff --git a/src/features/tutorial/components/profileTutorial/EligibleFooter.native.test.tsx b/src/features/tutorial/components/profileTutorial/EligibleFooter.native.test.tsx index c186ac9b85b..d5df8f06a3e 100644 --- a/src/features/tutorial/components/profileTutorial/EligibleFooter.native.test.tsx +++ b/src/features/tutorial/components/profileTutorial/EligibleFooter.native.test.tsx @@ -4,8 +4,11 @@ import { navigate } from '__mocks__/@react-navigation/native' import { EligibleFooter } from 'features/tutorial/components/profileTutorial/EligibleFooter' import { setFeatureFlags } from 'libs/firebase/firestore/featureFlags/__tests__/setFeatureFlags' import { RemoteStoreFeatureFlags } from 'libs/firebase/firestore/types' +import { mockSettings } from 'tests/mockSettings' import { fireEvent, render, screen } from 'tests/utils' +mockSettings() + describe('', () => { beforeEach(() => { setFeatureFlags([RemoteStoreFeatureFlags.ENABLE_PACIFIC_FRANC_CURRENCY]) diff --git a/src/features/tutorial/context/OnboardingWrapper.native.test.tsx b/src/features/tutorial/context/OnboardingWrapper.native.test.tsx index e81ec29ecba..77a806bb462 100644 --- a/src/features/tutorial/context/OnboardingWrapper.native.test.tsx +++ b/src/features/tutorial/context/OnboardingWrapper.native.test.tsx @@ -4,10 +4,12 @@ import { } from 'features/tutorial/context/OnboardingWrapper' import { NonEligible, TutorialTypes } from 'features/tutorial/enums' import { setFeatureFlags } from 'libs/firebase/firestore/featureFlags/__tests__/setFeatureFlags' +import { mockSettings } from 'tests/mockSettings' import { renderHook, act } from 'tests/utils' const mockShowModal = jest.fn() +mockSettings() jest.mock('ui/components/modals/useModal', () => ({ useModal: () => ({ visible: false, diff --git a/src/features/tutorial/pages/AgeSelectionFork.native.test.tsx b/src/features/tutorial/pages/AgeSelectionFork.native.test.tsx index b9560da0c9d..fdfa0e31a32 100644 --- a/src/features/tutorial/pages/AgeSelectionFork.native.test.tsx +++ b/src/features/tutorial/pages/AgeSelectionFork.native.test.tsx @@ -2,17 +2,18 @@ import { StackScreenProps } from '@react-navigation/stack' import React from 'react' import { navigate, useRoute } from '__mocks__/@react-navigation/native' -import { setSettings } from 'features/auth/tests/setSettings' import { navigateToHomeConfig } from 'features/navigation/helpers/navigateToHome' import { TutorialRootStackParamList } from 'features/navigation/RootNavigator/types' import { TutorialTypes, NonEligible } from 'features/tutorial/enums' import { AgeSelectionFork } from 'features/tutorial/pages/AgeSelectionFork' import { setFeatureFlags } from 'libs/firebase/firestore/featureFlags/__tests__/setFeatureFlags' import { storage } from 'libs/storage' +import { mockSettings } from 'tests/mockSettings' import { render, screen, userEvent } from 'tests/utils' jest.mock('libs/firebase/analytics/analytics') jest.mock('features/navigation/helpers/navigateToHome') +mockSettings() const user = userEvent.setup() jest.useFakeTimers() @@ -133,7 +134,7 @@ describe('AgeSelectionFork', () => { describe('when enableCreditV3 activated', () => { beforeEach(() => { - setSettings({ wipEnableCreditV3: true }) + mockSettings({ wipEnableCreditV3: true }) }) describe('onboarding', () => { diff --git a/src/features/tutorial/pages/AgeSelectionFork.tsx b/src/features/tutorial/pages/AgeSelectionFork.tsx index c49e5b44ee9..f6b0eab88a0 100644 --- a/src/features/tutorial/pages/AgeSelectionFork.tsx +++ b/src/features/tutorial/pages/AgeSelectionFork.tsx @@ -2,7 +2,7 @@ import { StackScreenProps } from '@react-navigation/stack' import React, { FunctionComponent, useCallback } from 'react' import styled from 'styled-components/native' -import { useSettingsContext } from 'features/auth/context/SettingsContext' +import { useSettings } from 'features/auth/context/useSettings' import { navigateToHomeConfig } from 'features/navigation/helpers/navigateToHome' import { TutorialRootStackParamList } from 'features/navigation/RootNavigator/types' import { AgeButton } from 'features/tutorial/components/AgeButton' @@ -26,7 +26,7 @@ type AgeButtonProps = { type Props = StackScreenProps export const AgeSelectionFork: FunctionComponent = ({ route }: Props) => { - const { data: settings } = useSettingsContext() + const { data: settings } = useSettings() const enableCreditV3 = settings?.wipEnableCreditV3 const type = route.params.type diff --git a/src/features/tutorial/pages/AgeSelectionFork.web.test.tsx b/src/features/tutorial/pages/AgeSelectionFork.web.test.tsx index d45f366ddd2..3b264a8e91e 100644 --- a/src/features/tutorial/pages/AgeSelectionFork.web.test.tsx +++ b/src/features/tutorial/pages/AgeSelectionFork.web.test.tsx @@ -2,15 +2,16 @@ import { StackScreenProps } from '@react-navigation/stack' import React from 'react' import { useRoute } from '__mocks__/@react-navigation/native' -import { setSettings } from 'features/auth/tests/setSettings' import { TutorialRootStackParamList } from 'features/navigation/RootNavigator/types' import { TutorialTypes } from 'features/tutorial/enums' import { AgeSelectionFork } from 'features/tutorial/pages/AgeSelectionFork' import { setFeatureFlags } from 'libs/firebase/firestore/featureFlags/__tests__/setFeatureFlags' +import { mockSettings } from 'tests/mockSettings' import { checkAccessibilityFor, render } from 'tests/utils/web' jest.mock('libs/firebase/analytics/analytics') jest.mock('libs/firebase/remoteConfig/remoteConfig.services') +mockSettings() describe('AgeSelectionFork', () => { beforeEach(() => { @@ -28,7 +29,7 @@ describe('AgeSelectionFork', () => { describe('when enableCreditV3 activated', () => { beforeEach(() => { - setSettings({ wipEnableCreditV3: true }) + mockSettings({ wipEnableCreditV3: true }) }) it('should not have basic accessibility', async () => { diff --git a/src/features/tutorial/pages/AgeSelectionOther.native.test.tsx b/src/features/tutorial/pages/AgeSelectionOther.native.test.tsx index 60df0e167df..a980b225344 100644 --- a/src/features/tutorial/pages/AgeSelectionOther.native.test.tsx +++ b/src/features/tutorial/pages/AgeSelectionOther.native.test.tsx @@ -11,6 +11,7 @@ import { AgeSelectionOther } from 'features/tutorial/pages/AgeSelectionOther' import { analytics } from 'libs/analytics/provider' import { setFeatureFlags } from 'libs/firebase/firestore/featureFlags/__tests__/setFeatureFlags' import { storage } from 'libs/storage' +import { mockSettings } from 'tests/mockSettings' import { render, screen, userEvent } from 'tests/utils' const mockShowModal = jest.fn() @@ -21,6 +22,7 @@ jest.mock('ui/components/modals/useModal', () => ({ hideModal: jest.fn(), }), })) +mockSettings() jest.spyOn(useGoBack, 'useGoBack').mockReturnValue({ goBack: jest.fn(), diff --git a/src/features/tutorial/pages/NonEligibleModal.native.test.tsx b/src/features/tutorial/pages/NonEligibleModal.native.test.tsx index 7ca2657537f..f7ed5843343 100644 --- a/src/features/tutorial/pages/NonEligibleModal.native.test.tsx +++ b/src/features/tutorial/pages/NonEligibleModal.native.test.tsx @@ -1,12 +1,12 @@ import React from 'react' -import { setSettings } from 'features/auth/tests/setSettings' import { navigateToHome } from 'features/navigation/helpers/navigateToHome' import * as NavigationHelpers from 'features/navigation/helpers/openUrl' import { NonEligible, TutorialTypes } from 'features/tutorial/enums' import { NonEligibleModal } from 'features/tutorial/pages/NonEligibleModal' import { env } from 'libs/environment/fixtures' import { setFeatureFlags } from 'libs/firebase/firestore/featureFlags/__tests__/setFeatureFlags' +import { mockSettings } from 'tests/mockSettings' import { userEvent, render, screen } from 'tests/utils' jest.mock('features/navigation/helpers/navigateToHome') @@ -20,6 +20,7 @@ jest.mock('react-native/Libraries/Animated/createAnimatedComponent', () => { return Component } }) +mockSettings() const user = userEvent.setup() jest.useFakeTimers() @@ -103,7 +104,7 @@ describe('NonEligibleModal', () => { describe('when enableCreditV3 activated', () => { beforeEach(() => { - setSettings({ wipEnableCreditV3: true }) + mockSettings({ wipEnableCreditV3: true }) }) it('should display subtitle with credit V3', () => { diff --git a/src/features/tutorial/pages/NonEligibleModal.tsx b/src/features/tutorial/pages/NonEligibleModal.tsx index a623c142862..c2acf2ae90b 100644 --- a/src/features/tutorial/pages/NonEligibleModal.tsx +++ b/src/features/tutorial/pages/NonEligibleModal.tsx @@ -1,7 +1,7 @@ import React, { useCallback } from 'react' import styled from 'styled-components/native' -import { useSettingsContext } from 'features/auth/context/SettingsContext' +import { useSettings } from 'features/auth/context/useSettings' import { navigateToHome } from 'features/navigation/helpers/navigateToHome' import { openUrl } from 'features/navigation/helpers/openUrl' import { NonEligible, TutorialTypes } from 'features/tutorial/enums' @@ -21,7 +21,7 @@ type Props = { } export const NonEligibleModal = ({ visible, userStatus, hideModal, type }: Props) => { - const { data: settings } = useSettingsContext() + const { data: settings } = useSettings() const enableCreditV3 = settings?.wipEnableCreditV3 const subtitle = `Tu peux bénéficier de ton crédit sur l’application à partir de tes ${enableCreditV3 ? '17' : '15'} ans.` diff --git a/src/features/tutorial/pages/NonEligibleModal.web.test.tsx b/src/features/tutorial/pages/NonEligibleModal.web.test.tsx index 80c43ec8ff4..de7792f4801 100644 --- a/src/features/tutorial/pages/NonEligibleModal.web.test.tsx +++ b/src/features/tutorial/pages/NonEligibleModal.web.test.tsx @@ -2,12 +2,14 @@ import React from 'react' import { NonEligible, TutorialTypes } from 'features/tutorial/enums' import { setFeatureFlags } from 'libs/firebase/firestore/featureFlags/__tests__/setFeatureFlags' +import { mockSettings } from 'tests/mockSettings' import { checkAccessibilityFor, render } from 'tests/utils/web' import { NonEligibleModal } from './NonEligibleModal' jest.mock('libs/firebase/analytics/analytics') jest.mock('libs/firebase/remoteConfig/remoteConfig.services') +mockSettings() describe('', () => { beforeEach(() => setFeatureFlags()) diff --git a/src/features/tutorial/pages/onboarding/OnboardingAgeInformation.native.test.tsx b/src/features/tutorial/pages/onboarding/OnboardingAgeInformation.native.test.tsx index 4bfcfb690fe..f4a46dc6860 100644 --- a/src/features/tutorial/pages/onboarding/OnboardingAgeInformation.native.test.tsx +++ b/src/features/tutorial/pages/onboarding/OnboardingAgeInformation.native.test.tsx @@ -2,7 +2,6 @@ import { StackScreenProps } from '@react-navigation/stack' import React from 'react' import { navigate, reset } from '__mocks__/@react-navigation/native' -import { setSettings } from 'features/auth/tests/setSettings' import { StepperOrigin, TutorialRootStackParamList } from 'features/navigation/RootNavigator/types' import { homeNavConfig } from 'features/navigation/TabBar/helpers' import * as useGoBack from 'features/navigation/useGoBack' @@ -11,6 +10,7 @@ import { OnboardingAgeInformation } from 'features/tutorial/pages/onboarding/Onb import { analytics } from 'libs/analytics/provider' import { setFeatureFlags } from 'libs/firebase/firestore/featureFlags/__tests__/setFeatureFlags' import { RemoteStoreFeatureFlags } from 'libs/firebase/firestore/types' +import { mockSettings } from 'tests/mockSettings' import { reactQueryProviderHOC } from 'tests/reactQueryProviderHOC' import { userEvent, render, screen } from 'tests/utils' @@ -130,7 +130,7 @@ describe('OnboardingAgeInformation', () => { describe('when enableCreditV3 activated', () => { beforeEach(() => { - setSettings({ wipEnableCreditV3: true }) + mockSettings({ wipEnableCreditV3: true }) }) it.each(AGES)('should render correctly for %s-year-old', (age) => { diff --git a/src/features/tutorial/pages/onboarding/OnboardingWelcome.native.test.tsx b/src/features/tutorial/pages/onboarding/OnboardingWelcome.native.test.tsx index 5b291e6c74d..c1f44d12ae9 100644 --- a/src/features/tutorial/pages/onboarding/OnboardingWelcome.native.test.tsx +++ b/src/features/tutorial/pages/onboarding/OnboardingWelcome.native.test.tsx @@ -1,13 +1,13 @@ import React from 'react' import { navigate } from '__mocks__/@react-navigation/native' -import { setSettings } from 'features/auth/tests/setSettings' import { StepperOrigin } from 'features/navigation/RootNavigator/types' import { OnboardingWelcome } from 'features/tutorial/pages/onboarding/OnboardingWelcome' import { analytics } from 'libs/analytics/provider' import { setFeatureFlags } from 'libs/firebase/firestore/featureFlags/__tests__/setFeatureFlags' import { RemoteStoreFeatureFlags } from 'libs/firebase/firestore/types' import { storage } from 'libs/storage' +import { mockSettings } from 'tests/mockSettings' import { userEvent, render, screen } from 'tests/utils' jest.mock('react-native/Libraries/Animated/createAnimatedComponent', () => { @@ -16,6 +16,8 @@ jest.mock('react-native/Libraries/Animated/createAnimatedComponent', () => { } }) +mockSettings() + const user = userEvent.setup() jest.useFakeTimers() @@ -103,7 +105,7 @@ describe('OnboardingWelcome', () => { describe('when enableCreditV3 activated', () => { beforeEach(() => { - setSettings({ wipEnableCreditV3: true }) + mockSettings({ wipEnableCreditV3: true }) }) it('should display subtitle with credit V3', () => { diff --git a/src/features/tutorial/pages/onboarding/OnboardingWelcome.tsx b/src/features/tutorial/pages/onboarding/OnboardingWelcome.tsx index 19a4f8a8da1..8b9ef991b31 100644 --- a/src/features/tutorial/pages/onboarding/OnboardingWelcome.tsx +++ b/src/features/tutorial/pages/onboarding/OnboardingWelcome.tsx @@ -4,7 +4,7 @@ import LinearGradient from 'react-native-linear-gradient' import styled from 'styled-components/native' import { AuthenticationButton } from 'features/auth/components/AuthenticationButton/AuthenticationButton' -import { useSettingsContext } from 'features/auth/context/SettingsContext' +import { useSettings } from 'features/auth/context/useSettings' import { StepperOrigin } from 'features/navigation/RootNavigator/types' import { WELCOME_BACKGROUND_SOURCE } from 'features/tutorial/components/onboarding/welcomeBackground' import { analytics } from 'libs/analytics/provider' @@ -32,7 +32,7 @@ export const OnboardingWelcome: FunctionComponent = () => { const disableActivation = useFeatureFlag(RemoteStoreFeatureFlags.DISABLE_ACTIVATION) const navigateToScreen = disableActivation ? 'ForceUpdate' : 'OnboardingGeolocation' - const { data: settings } = useSettingsContext() + const { data: settings } = useSettings() const enableCreditV3 = settings?.wipEnableCreditV3 const subtitle = `Plus de 3 millions d’offres culturelles et un crédit à dépenser sur l’application si tu as ${enableCreditV3 ? '17 ou 18' : 'entre 15 et 18'} ans.` diff --git a/src/features/tutorial/pages/profileTutorial/ProfileTutorialAgeInformation.native.test.tsx b/src/features/tutorial/pages/profileTutorial/ProfileTutorialAgeInformation.native.test.tsx index 051284561f3..f109789a2a7 100644 --- a/src/features/tutorial/pages/profileTutorial/ProfileTutorialAgeInformation.native.test.tsx +++ b/src/features/tutorial/pages/profileTutorial/ProfileTutorialAgeInformation.native.test.tsx @@ -11,12 +11,14 @@ import { analytics } from 'libs/analytics/provider' import { setFeatureFlags } from 'libs/firebase/firestore/featureFlags/__tests__/setFeatureFlags' import { RemoteStoreFeatureFlags } from 'libs/firebase/firestore/types' import { mockAuthContextWithUser, mockAuthContextWithoutUser } from 'tests/AuthContextUtils' +import { mockSettings } from 'tests/mockSettings' import { fireEvent, render, screen } from 'tests/utils' import { ProfileTutorialAgeInformation } from './ProfileTutorialAgeInformation' jest.mock('features/auth/context/AuthContext') jest.unmock('react-native/Libraries/Animated/createAnimatedComponent') +mockSettings() const sixteenUser = { ...beneficiaryUser, birthDate: format(SIXTEEN_AGE_DATE, 'yyyy-MM-dd') } diff --git a/src/features/tutorial/pages/profileTutorial/ProfileTutorialAgeInformation.web.test.tsx b/src/features/tutorial/pages/profileTutorial/ProfileTutorialAgeInformation.web.test.tsx index 8fd2bd92bbe..9c9878406b4 100644 --- a/src/features/tutorial/pages/profileTutorial/ProfileTutorialAgeInformation.web.test.tsx +++ b/src/features/tutorial/pages/profileTutorial/ProfileTutorialAgeInformation.web.test.tsx @@ -5,6 +5,7 @@ import { act } from 'react-dom/test-utils' import { TutorialRootStackParamList } from 'features/navigation/RootNavigator/types' import { setFeatureFlags } from 'libs/firebase/firestore/featureFlags/__tests__/setFeatureFlags' import { RemoteStoreFeatureFlags } from 'libs/firebase/firestore/types' +import { mockSettings } from 'tests/mockSettings' import { checkAccessibilityFor, render } from 'tests/utils/web' import { ProfileTutorialAgeInformation } from './ProfileTutorialAgeInformation' @@ -15,6 +16,7 @@ const navProps = { route: { params: { age: 15 } } } as StackScreenProps< > jest.mock('features/favorites/context/FavoritesWrapper') +mockSettings() jest.mock('libs/firebase/analytics/analytics') jest.mock('libs/firebase/remoteConfig/remoteConfig.services') diff --git a/src/features/tutorial/pages/profileTutorial/ProfileTutorialAgeInformationCreditV3.native.test.tsx b/src/features/tutorial/pages/profileTutorial/ProfileTutorialAgeInformationCreditV3.native.test.tsx index 4f2286c2c70..08c2e366b88 100644 --- a/src/features/tutorial/pages/profileTutorial/ProfileTutorialAgeInformationCreditV3.native.test.tsx +++ b/src/features/tutorial/pages/profileTutorial/ProfileTutorialAgeInformationCreditV3.native.test.tsx @@ -4,10 +4,11 @@ import { ProfileTutorialAgeInformationCreditV3 } from 'features/tutorial/pages/p import { analytics } from 'libs/analytics/provider' import { setFeatureFlags } from 'libs/firebase/firestore/featureFlags/__tests__/setFeatureFlags' import { RemoteStoreFeatureFlags } from 'libs/firebase/firestore/types' +import { mockSettings } from 'tests/mockSettings' import { render, screen, userEvent } from 'tests/utils' -jest.unmock('react-native/Libraries/Animated/createAnimatedComponent') jest.mock('libs/firebase/analytics/analytics') +mockSettings() jest.useFakeTimers() diff --git a/src/features/tutorial/pages/profileTutorial/ProfileTutorialAgeInformationCreditV3.web.test.tsx b/src/features/tutorial/pages/profileTutorial/ProfileTutorialAgeInformationCreditV3.web.test.tsx index 829bdd7c0c9..cd5f2b416e9 100644 --- a/src/features/tutorial/pages/profileTutorial/ProfileTutorialAgeInformationCreditV3.web.test.tsx +++ b/src/features/tutorial/pages/profileTutorial/ProfileTutorialAgeInformationCreditV3.web.test.tsx @@ -4,10 +4,12 @@ import { act } from 'react-dom/test-utils' import { ProfileTutorialAgeInformationCreditV3 } from 'features/tutorial/pages/profileTutorial/ProfileTutorialAgeInformationCreditV3' import { setFeatureFlags } from 'libs/firebase/firestore/featureFlags/__tests__/setFeatureFlags' import { RemoteStoreFeatureFlags } from 'libs/firebase/firestore/types' +import { mockSettings } from 'tests/mockSettings' import { checkAccessibilityFor, render } from 'tests/utils/web' jest.mock('libs/firebase/remoteConfig/remoteConfig.services') jest.mock('libs/firebase/analytics/analytics') +mockSettings() describe('', () => { describe('Accessibility', () => { diff --git a/src/features/venue/api/useVenueOffers.test.ts b/src/features/venue/api/useVenueOffers.test.ts index cad9e6e1f10..042118f6cab 100644 --- a/src/features/venue/api/useVenueOffers.test.ts +++ b/src/features/venue/api/useVenueOffers.test.ts @@ -9,11 +9,13 @@ import { transformOfferHit, filterOfferHit } from 'libs/algolia/fetchAlgolia/tra import { AlgoliaOffer, HitOffer } from 'libs/algolia/types' import { LocationMode, Position } from 'libs/location/types' import * as useNetInfoContextDefault from 'libs/network/NetInfoWrapper' +import { mockSettings } from 'tests/mockSettings' import { reactQueryProviderHOC } from 'tests/reactQueryProviderHOC' import { renderHook, waitFor } from 'tests/utils' const mockLocationMode = LocationMode.AROUND_ME const mockUserLocation: Position = { latitude: 48.90374, longitude: 2.48171 } +mockSettings() jest.mock('libs/location/LocationWrapper', () => ({ useLocation: () => ({ userLocation: mockUserLocation, @@ -316,8 +318,7 @@ describe('useVenueOffers', () => { name: 'I want something more', prices: [2800], subcategoryId: SubcategoryIdEnum.CONCERT, - thumbUrl: - 'https://storage.googleapis.com/passculture-metier-prod-production-assets-fine-grained/thumbs/mediations/CDZQ', + thumbUrl: 'https://localhost-storage/thumbs/mediations/CDZQ', artist: 'Céline Dion', }, _geoloc: { lat: 4.90339, lng: -52.31663 }, diff --git a/src/features/venue/components/VenueBody/VenueBanner.native.test.tsx b/src/features/venue/components/VenueBody/VenueBanner.native.test.tsx index ddc10e075b1..1ff331f2935 100644 --- a/src/features/venue/components/VenueBody/VenueBanner.native.test.tsx +++ b/src/features/venue/components/VenueBody/VenueBanner.native.test.tsx @@ -1,12 +1,14 @@ import React from 'react' import { VenueBanner } from 'features/venue/components/VenueBody/VenueBanner' +import { mockSettings } from 'tests/mockSettings' import { render, screen, userEvent } from 'tests/utils' const mockHandleImagePress = jest.fn() const user = userEvent.setup() jest.useFakeTimers() +mockSettings() describe('', () => { it('should display the Google watermark if the image is from Google', () => { diff --git a/src/features/venue/components/VenueBody/VenueBanner.web.test.tsx b/src/features/venue/components/VenueBody/VenueBanner.web.test.tsx index 50ac523b451..fd5a3568599 100644 --- a/src/features/venue/components/VenueBody/VenueBanner.web.test.tsx +++ b/src/features/venue/components/VenueBody/VenueBanner.web.test.tsx @@ -1,9 +1,11 @@ import React from 'react' import { VenueBanner } from 'features/venue/components/VenueBody/VenueBanner' +import { mockSettings } from 'tests/mockSettings' import { fireEvent, render, screen } from 'tests/utils/web' const mockHandleImagePress = jest.fn() +mockSettings() describe('', () => { it('should call press handler when pressing image not from google', () => { diff --git a/src/features/venue/pages/Venue/Venue.perf.test.tsx b/src/features/venue/pages/Venue/Venue.perf.test.tsx index 6738e870bc3..51c4f6af62f 100644 --- a/src/features/venue/pages/Venue/Venue.perf.test.tsx +++ b/src/features/venue/pages/Venue/Venue.perf.test.tsx @@ -9,6 +9,7 @@ import { Venue } from 'features/venue/pages/Venue/Venue' import { setFeatureFlags } from 'libs/firebase/firestore/featureFlags/__tests__/setFeatureFlags' import { subcategoriesDataTest } from 'libs/subcategories/fixtures/subcategoriesResponse' import { Offer } from 'shared/offer/types' +import { mockSettings } from 'tests/mockSettings' import { mockServer } from 'tests/mswServer' import { reactQueryProviderHOC } from 'tests/reactQueryProviderHOC' import { act, measurePerformance } from 'tests/utils' @@ -19,6 +20,8 @@ jest.mock('react-native/Libraries/Animated/NativeAnimatedHelper') jest.mock('features/search/context/SearchWrapper') +mockSettings() + useRoute.mockImplementation(() => ({ params: { id: venueDataTest.id } })) jest.mock('features/gtlPlaylist/hooks/useGTLPlaylists') diff --git a/src/features/venue/pages/Venue/Venue.web.test.tsx b/src/features/venue/pages/Venue/Venue.web.test.tsx index 39baface663..574ae8a50e7 100644 --- a/src/features/venue/pages/Venue/Venue.web.test.tsx +++ b/src/features/venue/pages/Venue/Venue.web.test.tsx @@ -12,6 +12,7 @@ import { setFeatureFlags } from 'libs/firebase/firestore/featureFlags/__tests__/ import { RemoteStoreFeatureFlags } from 'libs/firebase/firestore/types' import { subcategoriesDataTest } from 'libs/subcategories/fixtures/subcategoriesResponse' import { Offer } from 'shared/offer/types' +import { mockSettings } from 'tests/mockSettings' import { mockServer } from 'tests/mswServer' import { reactQueryProviderHOC } from 'tests/reactQueryProviderHOC' import { act, checkAccessibilityFor, fireEvent, render, screen } from 'tests/utils/web' @@ -22,9 +23,10 @@ jest.mock('libs/subcategories/useSubcategory') jest.mock('features/venue/api/useVenue') jest.mock('features/venue/api/useVenueOffers') jest.mock('libs/itinerary/useItinerary') - jest.mock('features/auth/context/AuthContext') +mockSettings() + jest.mock('uuid', () => ({ v1: jest.fn(), v4: jest.fn(), diff --git a/src/features/venueMap/components/VenueMapPreview/VenueMapPreview.native.test.tsx b/src/features/venueMap/components/VenueMapPreview/VenueMapPreview.native.test.tsx index de185b5a303..b54a6d53485 100644 --- a/src/features/venueMap/components/VenueMapPreview/VenueMapPreview.native.test.tsx +++ b/src/features/venueMap/components/VenueMapPreview/VenueMapPreview.native.test.tsx @@ -3,8 +3,11 @@ import React, { ComponentProps } from 'react' import { navigate } from '__mocks__/@react-navigation/native' import { offerResponseSnap } from 'features/offer/fixtures/offerResponse' import { VenueMapPreview } from 'features/venueMap/components/VenueMapPreview/VenueMapPreview' +import { mockSettings } from 'tests/mockSettings' import { fireEvent, render, screen } from 'tests/utils' +mockSettings() + describe('', () => { it('should render correctly with border by default', () => { renderVenueMapPreview({}) diff --git a/src/features/venueMap/components/VenueMapView/VenueMapView.android.test.tsx b/src/features/venueMap/components/VenueMapView/VenueMapView.android.test.tsx index f8d849b74f7..33144aaa963 100644 --- a/src/features/venueMap/components/VenueMapView/VenueMapView.android.test.tsx +++ b/src/features/venueMap/components/VenueMapView/VenueMapView.android.test.tsx @@ -1,9 +1,12 @@ import { Platform } from 'react-native' +import { mockSettings } from 'tests/mockSettings' + Platform.OS = 'android' jest.mock('./Marker/Marker', () => require('./Marker/Marker.android')) jest.mock('../VenueMapLabel/LabelContainer', () => require('../VenueMapLabel/LabelContainer.android') ) +mockSettings() require('./VenueMapView.native.test') diff --git a/src/features/venueMap/components/VenueMapView/VenueMapView.native.test.tsx b/src/features/venueMap/components/VenueMapView/VenueMapView.native.test.tsx index ca5f113fcdf..94434e490ea 100644 --- a/src/features/venueMap/components/VenueMapView/VenueMapView.native.test.tsx +++ b/src/features/venueMap/components/VenueMapView/VenueMapView.native.test.tsx @@ -18,12 +18,14 @@ import { useGetAllVenues } from 'features/venueMap/useGetAllVenues' import { venuesFixture } from 'libs/algolia/fetchAlgolia/fetchVenues/fixtures/venuesFixture' import { setFeatureFlags } from 'libs/firebase/firestore/featureFlags/__tests__/setFeatureFlags' import { RemoteStoreFeatureFlags } from 'libs/firebase/firestore/types' +import { mockSettings } from 'tests/mockSettings' import { reactQueryProviderHOC } from 'tests/reactQueryProviderHOC' import { act, fireEvent, render, screen, userEvent, waitFor } from 'tests/utils' import * as constants from '../../constant' const mockSetInitialVenues = jest.spyOn(initialVenuesActions, 'setInitialVenues') +mockSettings() jest.mock('features/venueMap/useGetAllVenues') const mockUseGetAllVenues = useGetAllVenues as jest.Mock diff --git a/src/libs/algolia/fetchAlgolia/transformOfferHit.ts b/src/libs/algolia/fetchAlgolia/transformOfferHit.ts index 3b3e923d7f0..48ceda348a2 100644 --- a/src/libs/algolia/fetchAlgolia/transformOfferHit.ts +++ b/src/libs/algolia/fetchAlgolia/transformOfferHit.ts @@ -1,6 +1,6 @@ import { useCallback } from 'react' -import { useSettingsContext } from 'features/auth/context/SettingsContext' +import { useSettings } from 'features/auth/context/useSettings' import { AlgoliaOffer, HitOffer } from 'libs/algolia/types' import { convertEuroToCents } from 'libs/parsers/pricesConversion' @@ -51,7 +51,7 @@ export const transformOfferHit = }) export const useTransformOfferHits = () => { - const { data: settings } = useSettingsContext() + const { data: settings } = useSettings() const { objectStorageUrl: urlPrefix } = settings || {} // eslint-disable-next-line react-hooks/exhaustive-deps diff --git a/src/libs/resizing-image-on-demand/useResizeImageURL.native.test.ts b/src/libs/resizing-image-on-demand/useResizeImageURL.native.test.ts index 47b41d146cb..8f378dd6bf3 100644 --- a/src/libs/resizing-image-on-demand/useResizeImageURL.native.test.ts +++ b/src/libs/resizing-image-on-demand/useResizeImageURL.native.test.ts @@ -4,13 +4,20 @@ import { renderHook } from '@testing-library/react-native' import { useWindowDimensions } from 'react-native' import { useTheme } from 'styled-components/native' -import { useSettingsContext } from 'features/auth/context/SettingsContext' +import { useSettings } from 'features/auth/context/__mocks__/useSettings' import { useResizeImageURL } from 'libs/resizing-image-on-demand/useResizeImageURL' +import { mockSettings } from 'tests/mockSettings' jest.mock('libs/environment/env') -jest.mock('react-native', () => ({ useWindowDimensions: jest.fn() })) +jest.mock('react-native', () => { + const { Platform } = jest.requireActual('react-native') + return { + Platform, + useWindowDimensions: jest.fn(), + } +}) jest.mock('styled-components/native') -jest.mock('features/auth/context/SettingsContext') +jest.mock('libs/monitoring/services') const mockUseWindowDimensions = useWindowDimensions as jest.Mock mockUseWindowDimensions.mockReturnValue({ scale: 1 }) @@ -22,9 +29,11 @@ const mockDefaultSettings = { enableFrontImageResizing: true, objectStorageUrl: 'https://localhost-storage', } -const mockUseSettingsContext = useSettingsContext as jest.Mock +const mockUseSettingsContext = useSettings mockUseSettingsContext.mockReturnValue({ data: mockDefaultSettings }) +mockSettings() + describe('useResizeImageURL hook', () => { it('should return a smaller resized image URL on a small screen', () => { const imageURL = 'https://localhost-storage/thumbs/mediations/BF6Q' @@ -67,7 +76,10 @@ describe('useResizeImageURL hook', () => { const imageURL = 'https://localhost-storage/thumbs/mediations/BF6Q' const { result } = renderHook(() => useResizeImageURL({ imageURL })) - expect(result.current).toEqual(imageURL) + const expectedImageURL = + 'https://image-resizing-dot-passculture-metier-ehp.ew.r.appspot.com/?size=327&filename=localhost-storage-v2/thumbs/mediations/BF6Q' + + expect(result.current).toEqual(expectedImageURL) }) it('should return the resized image URL with custom dimensions when provided and height > width', () => { diff --git a/src/libs/resizing-image-on-demand/useResizeImageURL.ts b/src/libs/resizing-image-on-demand/useResizeImageURL.ts index e2e4492e485..fceb4cf0b99 100644 --- a/src/libs/resizing-image-on-demand/useResizeImageURL.ts +++ b/src/libs/resizing-image-on-demand/useResizeImageURL.ts @@ -1,7 +1,7 @@ import { useWindowDimensions } from 'react-native' import { useTheme } from 'styled-components/native' -import { useSettingsContext } from 'features/auth/context/SettingsContext' +import { useSettings } from 'features/auth/context/useSettings' import { env } from 'libs/environment/env' const MOBILE_MAX_SIZE = 327 @@ -17,7 +17,7 @@ export const useResizeImageURL = ({ imageURL, height, width }: Params) => { const { isDesktopViewport } = useTheme() const { scale: pixelRatio } = useWindowDimensions() - const { data: appSettings } = useSettingsContext() + const { data: appSettings } = useSettings() if (!appSettings?.enableFrontImageResizing) { return imageURL } diff --git a/src/shared/exchangeRates/useGetPacificFrancToEuroRate.native.test.ts b/src/shared/exchangeRates/useGetPacificFrancToEuroRate.native.test.ts index 312518088c2..e65abcdb796 100644 --- a/src/shared/exchangeRates/useGetPacificFrancToEuroRate.native.test.ts +++ b/src/shared/exchangeRates/useGetPacificFrancToEuroRate.native.test.ts @@ -1,13 +1,13 @@ -import { setSettings } from 'features/auth/tests/setSettings' import { DEFAULT_PACIFIC_FRANC_TO_EURO_RATE } from 'shared/exchangeRates/defaultRateValues' import { useGetPacificFrancToEuroRate } from 'shared/exchangeRates/useGetPacificFrancToEuroRate' +import { mockSettings } from 'tests/mockSettings' import { reactQueryProviderHOC } from 'tests/reactQueryProviderHOC' import { act, renderHook } from 'tests/utils' describe('useGetPacificFrancToEuroRate', () => { beforeEach(() => { jest.clearAllMocks() - setSettings() + mockSettings() }) it('should initialize with the default rate', async () => { @@ -19,7 +19,7 @@ describe('useGetPacificFrancToEuroRate', () => { }) it('should return exchange rate from backend', async () => { - setSettings({ rates: { pacificFrancToEuro: 0.05 } }) + mockSettings({ rates: { pacificFrancToEuro: 0.05 } }) const { result } = renderUseGetPacificFrancToEuroRate() await act(async () => {}) diff --git a/src/shared/exchangeRates/useGetPacificFrancToEuroRate.ts b/src/shared/exchangeRates/useGetPacificFrancToEuroRate.ts index 9c31d9cb61e..3277fae2bc4 100644 --- a/src/shared/exchangeRates/useGetPacificFrancToEuroRate.ts +++ b/src/shared/exchangeRates/useGetPacificFrancToEuroRate.ts @@ -1,7 +1,7 @@ -import { useSettingsContext } from 'features/auth/context/SettingsContext' +import { useSettings } from 'features/auth/context/useSettings' import { DEFAULT_PACIFIC_FRANC_TO_EURO_RATE } from 'shared/exchangeRates/defaultRateValues' export const useGetPacificFrancToEuroRate = (): number => { - const { data: settings } = useSettingsContext() + const { data: settings } = useSettings() return settings?.rates?.pacificFrancToEuro ?? DEFAULT_PACIFIC_FRANC_TO_EURO_RATE } diff --git a/src/shared/offer/components/AuthenticationModal/AuthenticationModal.native.test.tsx b/src/shared/offer/components/AuthenticationModal/AuthenticationModal.native.test.tsx index 1801b29a51d..6b43d8b9eaa 100644 --- a/src/shared/offer/components/AuthenticationModal/AuthenticationModal.native.test.tsx +++ b/src/shared/offer/components/AuthenticationModal/AuthenticationModal.native.test.tsx @@ -1,10 +1,10 @@ import React from 'react' import { navigate } from '__mocks__/@react-navigation/native' -import { setSettings } from 'features/auth/tests/setSettings' import { StepperOrigin } from 'features/navigation/RootNavigator/types' import { analytics } from 'libs/analytics/provider' import { setFeatureFlags } from 'libs/firebase/firestore/featureFlags/__tests__/setFeatureFlags' +import { mockSettings } from 'tests/mockSettings' import { userEvent, render, screen } from 'tests/utils' import { AuthenticationModal } from './AuthenticationModal' @@ -12,6 +12,8 @@ import { AuthenticationModal } from './AuthenticationModal' const OFFER_ID = 123 const hideModal = jest.fn() +mockSettings() + jest.mock('react-native/Libraries/Animated/createAnimatedComponent', () => { return function createAnimatedComponent(Component: unknown) { return Component @@ -162,7 +164,7 @@ describe('', () => { describe('when enableCreditV3 activated', () => { beforeEach(() => { - setSettings({ wipEnableCreditV3: true }) + mockSettings({ wipEnableCreditV3: true }) }) it('should display subtitle with credit V3', () => { diff --git a/src/shared/offer/components/AuthenticationModal/AuthenticationModal.tsx b/src/shared/offer/components/AuthenticationModal/AuthenticationModal.tsx index 98cc59a8f25..43b9983ee20 100644 --- a/src/shared/offer/components/AuthenticationModal/AuthenticationModal.tsx +++ b/src/shared/offer/components/AuthenticationModal/AuthenticationModal.tsx @@ -2,7 +2,7 @@ import React, { FunctionComponent, useCallback } from 'react' import styled from 'styled-components/native' import { AuthenticationButton } from 'features/auth/components/AuthenticationButton/AuthenticationButton' -import { useSettingsContext } from 'features/auth/context/SettingsContext' +import { useSettings } from 'features/auth/context/useSettings' import { StepperOrigin } from 'features/navigation/RootNavigator/types' import { analytics } from 'libs/analytics/provider' import { ButtonWithLinearGradient } from 'ui/components/buttons/buttonWithLinearGradient/ButtonWithLinearGradient' @@ -26,7 +26,7 @@ export const AuthenticationModal: FunctionComponent = ({ offerId, from, }) => { - const { data: settings } = useSettingsContext() + const { data: settings } = useSettings() const enableCreditV3 = settings?.wipEnableCreditV3 const title = `Tu as ${enableCreditV3 ? '17 ou 18' : 'entre 15 et 18'} ans\u00a0?` diff --git a/src/shared/offer/components/FinishSubscriptionModal/FinishSubscriptionModal.native.test.tsx b/src/shared/offer/components/FinishSubscriptionModal/FinishSubscriptionModal.native.test.tsx index 64cf0372f06..4fc11989f36 100644 --- a/src/shared/offer/components/FinishSubscriptionModal/FinishSubscriptionModal.native.test.tsx +++ b/src/shared/offer/components/FinishSubscriptionModal/FinishSubscriptionModal.native.test.tsx @@ -9,11 +9,13 @@ import { setFeatureFlags } from 'libs/firebase/firestore/featureFlags/__tests__/ import { RemoteStoreFeatureFlags } from 'libs/firebase/firestore/types' import { useGetDepositAmountsByAge } from 'shared/user/useGetDepositAmountsByAge' import { mockAuthContextWithUser } from 'tests/AuthContextUtils' +import { mockSettings } from 'tests/mockSettings' import { fireEvent, render, screen } from 'tests/utils' import { FinishSubscriptionModal } from './FinishSubscriptionModal' jest.mock('features/auth/context/AuthContext') +mockSettings() jest.mock('shared/user/useGetDepositAmountsByAge') const mockDepositAmounts = useGetDepositAmountsByAge as jest.Mock diff --git a/src/shared/offer/helpers/useBookOfferModal.native.test.tsx b/src/shared/offer/helpers/useBookOfferModal.native.test.tsx index c4fd7cdf23a..d5ff33b41a1 100644 --- a/src/shared/offer/helpers/useBookOfferModal.native.test.tsx +++ b/src/shared/offer/helpers/useBookOfferModal.native.test.tsx @@ -6,6 +6,7 @@ import { setFeatureFlags } from 'libs/firebase/firestore/featureFlags/__tests__/ import { RemoteStoreFeatureFlags } from 'libs/firebase/firestore/types' import { OfferModal } from 'shared/offer/enums' import { OfferModalProps, useBookOfferModal } from 'shared/offer/helpers/useBookOfferModal' +import { mockSettings } from 'tests/mockSettings' import { reactQueryProviderHOC } from 'tests/reactQueryProviderHOC' import { render, renderHook, screen } from 'tests/utils' import { LINE_BREAK } from 'ui/theme/constants' @@ -15,6 +16,8 @@ jest.mock('features/bookOffer/pages/BookingOfferModal', () => ({ BookingOfferModal: () => mockBookingOfferModal, })) +mockSettings() + jest.mock('ui/components/modals/useModal.ts', () => ({ useModal: jest.fn().mockReturnValue({ visible: true, diff --git a/src/shared/user/useDepositAmountsByAge.ts b/src/shared/user/useDepositAmountsByAge.ts index e2a803034ad..6bcf23ef400 100644 --- a/src/shared/user/useDepositAmountsByAge.ts +++ b/src/shared/user/useDepositAmountsByAge.ts @@ -1,12 +1,12 @@ import { DepositAmountsByAge } from 'api/gen' -import { useSettingsContext } from 'features/auth/context/SettingsContext' +import { useSettings } from 'features/auth/context/useSettings' import { defaultCreditByAge } from 'shared/credits/defaultCreditByAge' import { formatCurrencyFromCents } from 'shared/currency/formatCurrencyFromCents' import { useGetCurrencyToDisplay } from 'shared/currency/useGetCurrencyToDisplay' import { useGetPacificFrancToEuroRate } from 'shared/exchangeRates/useGetPacificFrancToEuroRate' export function useDepositAmountsByAge() { - const { data: settings } = useSettingsContext() + const { data: settings } = useSettings() const enableCreditV3 = settings?.wipEnableCreditV3 const deposit = settings?.depositAmountsByAge diff --git a/src/shared/user/useGetDepositAmountsByAge.native.test.ts b/src/shared/user/useGetDepositAmountsByAge.native.test.ts index 517a9627d4d..08ac3e531f7 100644 --- a/src/shared/user/useGetDepositAmountsByAge.native.test.ts +++ b/src/shared/user/useGetDepositAmountsByAge.native.test.ts @@ -2,12 +2,14 @@ import mockdate from 'mockdate' import { setFeatureFlags } from 'libs/firebase/firestore/featureFlags/__tests__/setFeatureFlags' import { RemoteStoreFeatureFlags } from 'libs/firebase/firestore/types' +import { mockSettings } from 'tests/mockSettings' import { renderHook } from 'tests/utils' import { useGetDepositAmountsByAge } from './useGetDepositAmountsByAge' const TODAY = '2022-10-24' mockdate.set(new Date(TODAY)) +mockSettings() describe('useGetDepositAmountsByAge', () => { beforeEach(() => { diff --git a/src/features/auth/tests/setSettings.ts b/src/tests/mockSettings.ts similarity index 50% rename from src/features/auth/tests/setSettings.ts rename to src/tests/mockSettings.ts index 78d79653511..3a736cc1ae3 100644 --- a/src/features/auth/tests/setSettings.ts +++ b/src/tests/mockSettings.ts @@ -1,9 +1,9 @@ import { SettingsResponse } from 'api/gen' -import * as SettingsContextAPI from 'features/auth/context/SettingsContext' +import * as useSettingsModule from 'features/auth/context/useSettings' import { defaultSettings } from 'features/auth/fixtures/fixtures' -export const setSettings = (settings: Partial = {}) => { - const useSettingsContextSpy = jest.spyOn(SettingsContextAPI, 'useSettingsContext') +export const mockSettings = (settings: Partial = {}) => { + const useSettingsContextSpy = jest.spyOn(useSettingsModule, 'useSettings') useSettingsContextSpy.mockImplementation(() => ({ data: { ...defaultSettings, ...settings }, isLoading: false, diff --git a/src/ui/components/Avatar/AvatarList.native.test.tsx b/src/ui/components/Avatar/AvatarList.native.test.tsx index a49d435ff52..b5ed00c551b 100644 --- a/src/ui/components/Avatar/AvatarList.native.test.tsx +++ b/src/ui/components/Avatar/AvatarList.native.test.tsx @@ -1,9 +1,12 @@ import React from 'react' import { push } from '__mocks__/@react-navigation/native' +import { mockSettings } from 'tests/mockSettings' import { render, screen, userEvent } from 'tests/utils' import { AvatarsList } from 'ui/components/Avatar/AvatarList' +mockSettings() + const avatarsData = [ { id: 1, image: 'url1', name: 'Oda' }, { id: 2, image: 'url2', name: 'MMMM' }, diff --git a/src/ui/components/Avatar/AvatarListItem.native.test.tsx b/src/ui/components/Avatar/AvatarListItem.native.test.tsx index a6f1c98bb86..5efb7fcb3f9 100644 --- a/src/ui/components/Avatar/AvatarListItem.native.test.tsx +++ b/src/ui/components/Avatar/AvatarListItem.native.test.tsx @@ -1,8 +1,11 @@ import React from 'react' +import { mockSettings } from 'tests/mockSettings' import { render, screen } from 'tests/utils' import { AvatarListItem } from 'ui/components/Avatar/AvatarListItem' +mockSettings() + describe('', () => { it('should display artist avatar name', () => { render() diff --git a/src/ui/components/ImageTile.native.test.tsx b/src/ui/components/ImageTile.native.test.tsx index 67c34d7b6b6..b102b454614 100644 --- a/src/ui/components/ImageTile.native.test.tsx +++ b/src/ui/components/ImageTile.native.test.tsx @@ -1,8 +1,11 @@ import React from 'react' +import { mockSettings } from 'tests/mockSettings' import { render, screen } from 'tests/utils' import { ImageTile } from 'ui/components/ImageTile' +mockSettings() + const props = { height: 100, width: 100, diff --git a/src/ui/components/VenueInfoHeader/VenueInfoHeader.native.test.tsx b/src/ui/components/VenueInfoHeader/VenueInfoHeader.native.test.tsx index 7fd11e12d46..5c7bdc36df9 100644 --- a/src/ui/components/VenueInfoHeader/VenueInfoHeader.native.test.tsx +++ b/src/ui/components/VenueInfoHeader/VenueInfoHeader.native.test.tsx @@ -1,10 +1,13 @@ import React from 'react' +import { mockSettings } from 'tests/mockSettings' import { render, screen } from 'tests/utils' import { VenueInfoHeader } from 'ui/components/VenueInfoHeader/VenueInfoHeader' const VENUE_THUMBNAIL_SIZE = 48 +mockSettings() + describe('', () => { it('should display venue name', () => { render( diff --git a/src/ui/components/VenuePreview/VenuePreview.native.test.tsx b/src/ui/components/VenuePreview/VenuePreview.native.test.tsx index 3b3a4e72fd6..3b48dad8197 100644 --- a/src/ui/components/VenuePreview/VenuePreview.native.test.tsx +++ b/src/ui/components/VenuePreview/VenuePreview.native.test.tsx @@ -1,11 +1,14 @@ import React from 'react' import { offerResponseSnap } from 'features/offer/fixtures/offerResponse' +import { mockSettings } from 'tests/mockSettings' import { render, screen } from 'tests/utils' import { VenuePreview } from 'ui/components/VenuePreview/VenuePreview' const VENUE_THUMBNAIL_SIZE = 48 +mockSettings() + describe('', () => { it('should display venue name', () => { render(