From 1ffcbaaf1c3563bef46951d8224900a3db3ae498 Mon Sep 17 00:00:00 2001 From: cgerrard-pass <187540148+cgerrard-pass@users.noreply.github.com> Date: Wed, 5 Feb 2025 16:58:36 +0100 Subject: [PATCH] removed last useFF spyOns --- .../pages/BookingOfferModal.native.test.tsx | 8 +++++--- ...edCategoryThematicHomeHeader.native.test.tsx | 13 ++++++------- .../CategoryThematicHomeHeader.native.test.tsx | 13 ++++++------- .../components/modules/HomeModule.web.test.tsx | 8 +------- .../modules/VenueMapModule.web.test.tsx | 5 ++--- .../business/BusinessModule.native.test.tsx | 9 ++++----- .../helpers/useStepperInfo.native.test.tsx | 9 ++++----- .../components/LocationWidget.native.test.tsx | 8 +++++--- .../components/LocationWidget.web.test.tsx | 7 +++++-- .../LocationWidgetDesktop.native.test.tsx | 8 +++++--- .../LocationWidgetDesktop.web.test.tsx | 7 +++++-- .../MoviesScreeningCalendar.native.test.tsx | 4 ++-- .../OfferAbout/OfferAbout.native.test.tsx | 7 +++++-- .../OfferAccessibility.native.test.tsx | 7 +++++-- .../VenueSelectionList.native.test.tsx | 8 +++++--- .../VenueSelectionListHeader.native.test.tsx | 13 ++++++------- .../VenueSelectionModal.native.test.tsx | 8 +++++--- .../offer/pages/Offer/Offer.perf.test.tsx | 4 ++-- .../profile/pages/Profile.native.test.tsx | 5 ++--- .../CategoriesListDumb.web.test.tsx | 2 -- .../SearchHeader/SearchHeader.native.test.tsx | 5 ++--- .../SearchList/SearchList.native.test.tsx | 3 --- .../SearchLanding/SearchLanding.perf.test.tsx | 5 ++--- .../SearchResults/SearchResults.native.test.tsx | 8 +++++--- .../SearchResults/SearchResults.perf.test.tsx | 5 ++--- .../CategoriesModal.native.test.tsx | 17 ++++++++++------- .../CategoriesModal.web.test.tsx | 8 +++++--- .../VenueBody/VenueBody.native.test.tsx | 5 ++--- .../VenueTopComponent.native.test.tsx | 10 +++++----- .../VenueTopComponent.web.test.tsx | 8 +++++--- .../venue/pages/Venue/Venue.perf.test.tsx | 5 ++--- .../VenueMapView/VenueMapView.native.test.tsx | 6 +----- .../pages/VenueMap/VenueMap.native.test.tsx | 8 ++++++-- src/libs/hooks/useShowReview.native.test.tsx | 15 +++++++++------ src/libs/hooks/useShowReview.web.test.tsx | 5 ++--- .../Banners/GeolocationBanner.native.test.tsx | 13 ++++++------- .../FeatureFlag/FeatureFlag.native.test.tsx | 8 +++----- 37 files changed, 147 insertions(+), 140 deletions(-) diff --git a/src/features/bookOffer/pages/BookingOfferModal.native.test.tsx b/src/features/bookOffer/pages/BookingOfferModal.native.test.tsx index 50747366f75..4107a307f37 100644 --- a/src/features/bookOffer/pages/BookingOfferModal.native.test.tsx +++ b/src/features/bookOffer/pages/BookingOfferModal.native.test.tsx @@ -15,7 +15,7 @@ import { beneficiaryUser } from 'fixtures/user' import * as logOfferConversionAPI from 'libs/algolia/analytics/logOfferConversion' import { analytics } from 'libs/analytics/provider' import { CampaignEvents, campaignTracker } from 'libs/campaign' -import * as useFeatureFlag from 'libs/firebase/firestore/featureFlags/useFeatureFlag' +import { setFeatureFlags } from 'libs/firebase/firestore/featureFlags/__tests__/setFeatureFlags' import { reactQueryProviderHOC } from 'tests/reactQueryProviderHOC' import { act, fireEvent, render, screen, waitFor } from 'tests/utils' import { SnackBarHelperSettings } from 'ui/components/snackBar/types' @@ -27,8 +27,6 @@ jest.mock('libs/campaign') const mockDismissModal = jest.fn() const mockDispatch = jest.fn() -jest.spyOn(useFeatureFlag, 'useFeatureFlag').mockReturnValue(false) - const mockOffer = { ...baseOffer, subcategoryId: SubcategoryIdEnum.SEANCE_CINE } const mockUseBookingContext: jest.Mock = jest.fn(() => ({ @@ -135,6 +133,10 @@ jest.mock('react-native/Libraries/Animated/createAnimatedComponent', () => { }) describe('', () => { + beforeEach(() => { + setFeatureFlags() + }) + it('should dismiss modal when click on rightIconButton and reset state', async () => { render(reactQueryProviderHOC()) diff --git a/src/features/home/components/headers/AnimatedCategoryThematicHomeHeader.native.test.tsx b/src/features/home/components/headers/AnimatedCategoryThematicHomeHeader.native.test.tsx index b78baa149c2..b975d98bf5e 100644 --- a/src/features/home/components/headers/AnimatedCategoryThematicHomeHeader.native.test.tsx +++ b/src/features/home/components/headers/AnimatedCategoryThematicHomeHeader.native.test.tsx @@ -2,12 +2,11 @@ import React from 'react' import { AnimatedCategoryThematicHomeHeader } from 'features/home/components/headers/AnimatedCategoryThematicHomeHeader' import { Color } from 'features/home/types' -import * as useFeatureFlag from 'libs/firebase/firestore/featureFlags/useFeatureFlag' +import { setFeatureFlags } from 'libs/firebase/firestore/featureFlags/__tests__/setFeatureFlags' +import { RemoteStoreFeatureFlags } from 'libs/firebase/firestore/types' import { reactQueryProviderHOC } from 'tests/reactQueryProviderHOC' import { render, screen } from 'tests/utils' -const mockUseFeatureFlag = jest.spyOn(useFeatureFlag, 'useFeatureFlag') - jest.mock('features/profile/pages/NotificationSettings/usePushPermission', () => ({ usePushPermission: jest.fn(() => ({ pushPermission: 'granted', @@ -18,8 +17,8 @@ jest.mock('libs/firebase/analytics/analytics') describe('AnimatedCategoryThematicHomeHeader', () => { describe('when WIP_APP_V2_THEMATIC_HOME_HEADER is on', () => { - beforeAll(() => { - mockUseFeatureFlag.mockReturnValue(true) + beforeEach(() => { + setFeatureFlags([RemoteStoreFeatureFlags.WIP_APP_V2_THEMATIC_HOME_HEADER]) }) it('should render the v1 header and not the v2', async () => { @@ -38,8 +37,8 @@ describe('AnimatedCategoryThematicHomeHeader', () => { }) describe('when WIP_APP_V2_THEMATIC_HOME_HEADER is off', () => { - beforeAll(() => { - mockUseFeatureFlag.mockReturnValue(false) + beforeEach(() => { + setFeatureFlags() }) it('should render the v2 header and not the v1', async () => { diff --git a/src/features/home/components/headers/CategoryThematicHomeHeader.native.test.tsx b/src/features/home/components/headers/CategoryThematicHomeHeader.native.test.tsx index f55a94b882e..c7f829b9431 100644 --- a/src/features/home/components/headers/CategoryThematicHomeHeader.native.test.tsx +++ b/src/features/home/components/headers/CategoryThematicHomeHeader.native.test.tsx @@ -2,17 +2,16 @@ import React from 'react' import { CategoryThematicHomeHeader } from 'features/home/components/headers/CategoryThematicHomeHeader' import { Color } from 'features/home/types' -import * as useFeatureFlag from 'libs/firebase/firestore/featureFlags/useFeatureFlag' +import { setFeatureFlags } from 'libs/firebase/firestore/featureFlags/__tests__/setFeatureFlags' +import { RemoteStoreFeatureFlags } from 'libs/firebase/firestore/types' import { render, screen } from 'tests/utils' -const mockUseFeatureFlag = jest.spyOn(useFeatureFlag, 'useFeatureFlag') - jest.mock('libs/firebase/analytics/analytics') describe('CategoryThematicHomeHeader', () => { describe('when WIP_APP_V2_THEMATIC_HOME_HEADER is on', () => { - beforeAll(() => { - mockUseFeatureFlag.mockReturnValue(true) + beforeEach(() => { + setFeatureFlags([RemoteStoreFeatureFlags.WIP_APP_V2_THEMATIC_HOME_HEADER]) }) it('should render the v1 header and not the v2', async () => { @@ -45,8 +44,8 @@ describe('CategoryThematicHomeHeader', () => { }) describe('when WIP_APP_V2_THEMATIC_HOME_HEADER is off', () => { - beforeAll(() => { - mockUseFeatureFlag.mockReturnValue(false) + beforeEach(() => { + setFeatureFlags() }) it('should render the v2 header and not the v1', async () => { diff --git a/src/features/home/components/modules/HomeModule.web.test.tsx b/src/features/home/components/modules/HomeModule.web.test.tsx index b958d791b00..67da226ea06 100644 --- a/src/features/home/components/modules/HomeModule.web.test.tsx +++ b/src/features/home/components/modules/HomeModule.web.test.tsx @@ -17,7 +17,6 @@ import { HomepageModule, ModuleData } from 'features/home/types' import { SimilarOffersResponse } from 'features/offer/types' import { mockedAlgoliaResponse } from 'libs/algolia/fixtures/algoliaFixtures' import { setFeatureFlags } from 'libs/firebase/firestore/featureFlags/__tests__/setFeatureFlags' -import { useFeatureFlag } from 'libs/firebase/firestore/featureFlags/useFeatureFlag' import { RemoteStoreFeatureFlags } from 'libs/firebase/firestore/types' import { GeoCoordinates, Position } from 'libs/location' import { subcategoriesDataTest } from 'libs/subcategories/fixtures/subcategoriesResponse' @@ -33,9 +32,6 @@ const homeEntryId = '7tfixfH64pd5TMZeEKfNQ' const highlightOfferFixture = offersFixture[0] -jest.mock('libs/firebase/firestore/featureFlags/useFeatureFlag') -const mockedUseFeatureFlag = useFeatureFlag as jest.Mock - jest.mock('features/home/api/useHighlightOffer') const mockUseHighlightOffer = useHighlightOffer as jest.Mock const mockUseAuthContext = jest.fn().mockReturnValue({ @@ -81,7 +77,6 @@ describe('', () => { // because it's easier to test them one by one describe('Accessibility', () => { it('OldBusiness module should not have basic accessibility issues', async () => { - mockedUseFeatureFlag.mockReturnValueOnce(false) const { container } = renderHomeModule(formattedBusinessModule) expect(screen.getByText('Débloque ton crédit !')).toBeInTheDocument() @@ -92,7 +87,7 @@ describe('', () => { }) it('NewBusiness module should not have basic accessibility issues', async () => { - mockedUseFeatureFlag.mockReturnValueOnce(true) + setFeatureFlags([RemoteStoreFeatureFlags.WIP_APP_V2_BUSINESS_BLOCK]) const { container } = renderHomeModule(formattedNewBusinessModule) @@ -107,7 +102,6 @@ describe('', () => { }) it('Highlight module should not have basic accessibility issues', async () => { - mockedUseFeatureFlag.mockReturnValueOnce(true) mockUseHighlightOffer.mockReturnValueOnce(highlightOfferFixture) const { container } = renderHomeModule(highlightOfferModuleFixture) diff --git a/src/features/home/components/modules/VenueMapModule.web.test.tsx b/src/features/home/components/modules/VenueMapModule.web.test.tsx index ab3d959b952..d17041f078f 100644 --- a/src/features/home/components/modules/VenueMapModule.web.test.tsx +++ b/src/features/home/components/modules/VenueMapModule.web.test.tsx @@ -1,15 +1,14 @@ import React from 'react' import { VenueMapModule } from 'features/home/components/modules/VenueMapModule' -import * as useFeatureFlag from 'libs/firebase/firestore/featureFlags/useFeatureFlag' +import { setFeatureFlags } from 'libs/firebase/firestore/featureFlags/__tests__/setFeatureFlags' import { render, screen } from 'tests/utils/web' -jest.spyOn(useFeatureFlag, 'useFeatureFlag').mockReturnValue(true) - jest.mock('libs/firebase/remoteConfig/remoteConfig.services') describe('VenueMapModule', () => { it('should not display venue map block on web', () => { + setFeatureFlags() render() expect(screen.queryByText('Explorer les lieux')).not.toBeOnTheScreen() diff --git a/src/features/home/components/modules/business/BusinessModule.native.test.tsx b/src/features/home/components/modules/business/BusinessModule.native.test.tsx index 1a4858fd4a8..1004d100d0a 100644 --- a/src/features/home/components/modules/business/BusinessModule.native.test.tsx +++ b/src/features/home/components/modules/business/BusinessModule.native.test.tsx @@ -4,7 +4,8 @@ import { BusinessModule, BusinessModuleProps, } from 'features/home/components/modules/business/BusinessModule' -import * as useFeatureFlag from 'libs/firebase/firestore/featureFlags/useFeatureFlag' +import { setFeatureFlags } from 'libs/firebase/firestore/featureFlags/__tests__/setFeatureFlags' +import { RemoteStoreFeatureFlags } from 'libs/firebase/firestore/types' import { reactQueryProviderHOC } from 'tests/reactQueryProviderHOC' import { render, screen } from 'tests/utils' @@ -25,20 +26,18 @@ const props: BusinessModuleProps = { date: undefined, } -const mockFeatureFlag = jest.spyOn(useFeatureFlag, 'useFeatureFlag').mockReturnValue(false) - jest.mock('libs/firebase/analytics/analytics') describe('BusinessModule component', () => { it('should render NewBusinessModule if FF WIP_APP_V2_BUSINESS_BLOCK is on', () => { - mockFeatureFlag.mockReturnValueOnce(true) + setFeatureFlags([RemoteStoreFeatureFlags.WIP_APP_V2_BUSINESS_BLOCK]) renderBusinessModule(props) expect(screen.getByText('En savoir plus')).toBeOnTheScreen() }) it('should render OldBusinessModule if FF WIP_APP_V2_BUSINESS_BLOCK is off', async () => { - mockFeatureFlag.mockReturnValueOnce(false) + setFeatureFlags() renderBusinessModule(props) expect(screen.queryByText('En savoir plus')).not.toBeOnTheScreen() diff --git a/src/features/identityCheck/pages/helpers/useStepperInfo.native.test.tsx b/src/features/identityCheck/pages/helpers/useStepperInfo.native.test.tsx index 665ae9e6b84..fa34a94b847 100644 --- a/src/features/identityCheck/pages/helpers/useStepperInfo.native.test.tsx +++ b/src/features/identityCheck/pages/helpers/useStepperInfo.native.test.tsx @@ -12,7 +12,8 @@ import { import { useStepperInfo } from 'features/identityCheck/pages/helpers/useStepperInfo' import { IdentityCheckStep } from 'features/identityCheck/types' import { beneficiaryUser } from 'fixtures/user' -import * as useFeatureFlag from 'libs/firebase/firestore/featureFlags/useFeatureFlag' +import { setFeatureFlags } from 'libs/firebase/firestore/featureFlags/__tests__/setFeatureFlags' +import { RemoteStoreFeatureFlags } from 'libs/firebase/firestore/types' import { mockAuthContextWithUser } from 'tests/AuthContextUtils' const mockIdentityCheckState = mockState @@ -53,11 +54,9 @@ jest.mock('features/identityCheck/context/SubscriptionContextProvider', () => ({ })), })) -const useFeatureFlagSpy = jest.spyOn(useFeatureFlag, 'useFeatureFlag') -useFeatureFlagSpy.mockReturnValue(false) - describe('useStepperInfo', () => { beforeEach(() => { + setFeatureFlags() setSettings({ enablePhoneValidation: true }) }) @@ -182,7 +181,7 @@ describe('useStepperInfo', () => { it('should have firstScreen to "CulturalSurveyIntro" when feature flag FF enableCulturalSurveyMandatory is enabled and user needsToFillCulturalSurvey', () => { mockAuthContextWithUser({ ...beneficiaryUser, needsToFillCulturalSurvey: true }) - useFeatureFlagSpy.mockReturnValueOnce(true) + setFeatureFlags([RemoteStoreFeatureFlags.ENABLE_CULTURAL_SURVEY_MANDATORY]) const { stepsDetails } = useStepperInfo() const confirmationStep = stepsDetails.find( (step) => step.name === IdentityCheckStep.CONFIRMATION diff --git a/src/features/location/components/LocationWidget.native.test.tsx b/src/features/location/components/LocationWidget.native.test.tsx index 0c9fc35e6b9..f2b984855ad 100644 --- a/src/features/location/components/LocationWidget.native.test.tsx +++ b/src/features/location/components/LocationWidget.native.test.tsx @@ -3,7 +3,7 @@ import React from 'react' import { LocationWidget } from 'features/location/components/LocationWidget' import { ScreenOrigin } from 'features/location/enums' -import * as useFeatureFlag from 'libs/firebase/firestore/featureFlags/useFeatureFlag' +import { setFeatureFlags } from 'libs/firebase/firestore/featureFlags/__tests__/setFeatureFlags' import { act, fireEvent, render, screen } from 'tests/utils' jest.unmock('@react-navigation/native') @@ -18,9 +18,11 @@ jest.mock('ui/components/modals/useModal', () => ({ }), })) -jest.spyOn(useFeatureFlag, 'useFeatureFlag').mockReturnValue(true) - describe('LocationWidget', () => { + beforeEach(() => { + setFeatureFlags() // TODO(PC-34435): add tests for WIP_APP_V2_LOCATION_WIDGET + }) + it('should show modal when pressing widget', async () => { renderLocationWidget() diff --git a/src/features/location/components/LocationWidget.web.test.tsx b/src/features/location/components/LocationWidget.web.test.tsx index efb26d06017..d60a1433dfc 100644 --- a/src/features/location/components/LocationWidget.web.test.tsx +++ b/src/features/location/components/LocationWidget.web.test.tsx @@ -3,14 +3,17 @@ import React from 'react' import { LocationWidget } from 'features/location/components/LocationWidget' import { ScreenOrigin } from 'features/location/enums' -import * as useFeatureFlag from 'libs/firebase/firestore/featureFlags/useFeatureFlag' +import { setFeatureFlags } from 'libs/firebase/firestore/featureFlags/__tests__/setFeatureFlags' import { act, fireEvent, render, screen } from 'tests/utils/web' jest.unmock('@react-navigation/native') -jest.spyOn(useFeatureFlag, 'useFeatureFlag').mockReturnValue(true) jest.mock('libs/firebase/remoteConfig/remoteConfig.services') describe('LocationWidget', () => { + beforeEach(() => { + setFeatureFlags() // TODO(PC-34435): add tests for WIP_APP_V2_LOCATION_WIDGET + }) + afterEach(async () => { await act(async () => { jest.runOnlyPendingTimers() diff --git a/src/features/location/components/LocationWidgetDesktop.native.test.tsx b/src/features/location/components/LocationWidgetDesktop.native.test.tsx index 6f265bed9ff..1a324e972f2 100644 --- a/src/features/location/components/LocationWidgetDesktop.native.test.tsx +++ b/src/features/location/components/LocationWidgetDesktop.native.test.tsx @@ -2,7 +2,7 @@ import { NavigationContainer } from '@react-navigation/native' import React from 'react' import { LocationWidgetDesktop } from 'features/location/components/LocationWidgetDesktop' -import * as useFeatureFlag from 'libs/firebase/firestore/featureFlags/useFeatureFlag' +import { setFeatureFlags } from 'libs/firebase/firestore/featureFlags/__tests__/setFeatureFlags' import { useLocation } from 'libs/location' import { LocationLabel, LocationMode } from 'libs/location/types' import { storage } from 'libs/storage' @@ -23,9 +23,11 @@ jest.mock('ui/components/modals/useModal', () => ({ jest.mock('libs/location') const mockUseLocation = useLocation as jest.Mock -jest.spyOn(useFeatureFlag, 'useFeatureFlag').mockReturnValue(false) - describe('LocationWidgetDesktop', () => { + beforeEach(() => { + setFeatureFlags() + }) + it('should show modal when pressing widget', async () => { mockUseLocation.mockReturnValueOnce({ hasGeolocPosition: true, diff --git a/src/features/location/components/LocationWidgetDesktop.web.test.tsx b/src/features/location/components/LocationWidgetDesktop.web.test.tsx index fccd63795be..204e87aa9af 100644 --- a/src/features/location/components/LocationWidgetDesktop.web.test.tsx +++ b/src/features/location/components/LocationWidgetDesktop.web.test.tsx @@ -2,14 +2,17 @@ import { NavigationContainer } from '@react-navigation/native' import React from 'react' import { LocationWidgetDesktop } from 'features/location/components/LocationWidgetDesktop' -import * as useFeatureFlag from 'libs/firebase/firestore/featureFlags/useFeatureFlag' +import { setFeatureFlags } from 'libs/firebase/firestore/featureFlags/__tests__/setFeatureFlags' import { act, fireEvent, render, screen } from 'tests/utils/web' jest.unmock('@react-navigation/native') -jest.spyOn(useFeatureFlag, 'useFeatureFlag').mockReturnValue(true) jest.mock('libs/firebase/remoteConfig/remoteConfig.services') describe('LocationWidgetDesktop', () => { + beforeEach(() => { + setFeatureFlags() // TODO(PC-34435): add tests for WIP_APP_V2_LOCATION_WIDGET + }) + afterEach(async () => { await act(async () => { jest.runOnlyPendingTimers() diff --git a/src/features/offer/components/MoviesScreeningCalendar/MoviesScreeningCalendar.native.test.tsx b/src/features/offer/components/MoviesScreeningCalendar/MoviesScreeningCalendar.native.test.tsx index 1357f459707..0b4f7d7bab4 100644 --- a/src/features/offer/components/MoviesScreeningCalendar/MoviesScreeningCalendar.native.test.tsx +++ b/src/features/offer/components/MoviesScreeningCalendar/MoviesScreeningCalendar.native.test.tsx @@ -12,7 +12,7 @@ import { MoviesScreeningCalendar } from 'features/offer/components/MoviesScreeni import { offerResponseSnap } from 'features/offer/fixtures/offerResponse' import { offersStocksResponseSnap } from 'features/offer/fixtures/offersStocksResponse' import { VenueOffers } from 'features/venue/types' -import * as useFeatureFlag from 'libs/firebase/firestore/featureFlags/useFeatureFlag' +import { setFeatureFlags } from 'libs/firebase/firestore/featureFlags/__tests__/setFeatureFlags' import { subcategoriesDataTest } from 'libs/subcategories/fixtures/subcategoriesResponse' import { mockServer } from 'tests/mswServer' import { reactQueryProviderHOC } from 'tests/reactQueryProviderHOC' @@ -20,7 +20,6 @@ import { act, render, screen } from 'tests/utils' import { AnchorProvider } from 'ui/components/anchor/AnchorContext' jest.mock('libs/network/NetInfoWrapper') -jest.spyOn(useFeatureFlag, 'useFeatureFlag').mockReturnValue(true) jest.mock('libs/firebase/analytics/analytics') const MOCK_TIMESTAMP = '2024-05-08T12:50:00Z' @@ -58,6 +57,7 @@ jest.mock('react-native/Libraries/Animated/createAnimatedComponent', () => { describe('MoviesScreeningCalendar', () => { beforeEach(() => { + setFeatureFlags() mockdate.set(MOCK_DATE) mockServer.postApi(`/v2/offers/stocks`, mockedOfferStockResponse) mockServer.getApi(`/v2/offer/${ID}`, { diff --git a/src/features/offer/components/OfferAbout/OfferAbout.native.test.tsx b/src/features/offer/components/OfferAbout/OfferAbout.native.test.tsx index b702d99b1eb..dc826483f72 100644 --- a/src/features/offer/components/OfferAbout/OfferAbout.native.test.tsx +++ b/src/features/offer/components/OfferAbout/OfferAbout.native.test.tsx @@ -3,13 +3,16 @@ import React from 'react' import { OfferResponseV2 } from 'api/gen' import { OfferAbout } from 'features/offer/components/OfferAbout/OfferAbout' import { offerResponseSnap } from 'features/offer/fixtures/offerResponse' -import * as useFeatureFlag from 'libs/firebase/firestore/featureFlags/useFeatureFlag' +import { setFeatureFlags } from 'libs/firebase/firestore/featureFlags/__tests__/setFeatureFlags' import { render, screen } from 'tests/utils' jest.mock('libs/firebase/analytics/analytics') -jest.spyOn(useFeatureFlag, 'useFeatureFlag').mockReturnValue(false) describe('', () => { + beforeEach(() => { + setFeatureFlags() + }) + const metadata = [ { label: 'Speaker', value: 'Donald' }, { label: 'Author', value: 'Mickey' }, diff --git a/src/features/offer/components/OfferAccessibility/OfferAccessibility.native.test.tsx b/src/features/offer/components/OfferAccessibility/OfferAccessibility.native.test.tsx index 2c5982c2ed3..0a5c8972906 100644 --- a/src/features/offer/components/OfferAccessibility/OfferAccessibility.native.test.tsx +++ b/src/features/offer/components/OfferAccessibility/OfferAccessibility.native.test.tsx @@ -2,15 +2,18 @@ import React from 'react' import { OfferAccessibility } from 'features/offer/components/OfferAccessibility/OfferAccessibility' import { offerResponseSnap } from 'features/offer/fixtures/offerResponse' -import * as useFeatureFlag from 'libs/firebase/firestore/featureFlags/useFeatureFlag' +import { setFeatureFlags } from 'libs/firebase/firestore/featureFlags/__tests__/setFeatureFlags' import { render, screen } from 'tests/utils' jest.mock('libs/firebase/analytics/analytics') -jest.spyOn(useFeatureFlag, 'useFeatureFlag').mockReturnValue(false) const accessibility = offerResponseSnap.accessibility describe('', () => { + beforeEach(() => { + setFeatureFlags() + }) + it('should display section title when there is at least one handicap information', () => { render() diff --git a/src/features/offer/components/VenueSelectionList/VenueSelectionList.native.test.tsx b/src/features/offer/components/VenueSelectionList/VenueSelectionList.native.test.tsx index 9b0826743bb..7ee6e8a1977 100644 --- a/src/features/offer/components/VenueSelectionList/VenueSelectionList.native.test.tsx +++ b/src/features/offer/components/VenueSelectionList/VenueSelectionList.native.test.tsx @@ -1,6 +1,6 @@ import React from 'react' -import * as useFeatureFlag from 'libs/firebase/firestore/featureFlags/useFeatureFlag' +import { setFeatureFlags } from 'libs/firebase/firestore/featureFlags/__tests__/setFeatureFlags' import { fireEvent, render, screen } from 'tests/utils' import { theme } from 'theme' @@ -30,9 +30,11 @@ const items: VenueListItem[] = [ const nbLoadedHits = 3 const nbHits = 40 -jest.spyOn(useFeatureFlag, 'useFeatureFlag').mockReturnValue(false) - describe('', () => { + beforeEach(() => { + setFeatureFlags() + }) + it('should show list of items', () => { render( ', () => { describe('When wipAppV2SystemBlock feature flag activated', () => { - beforeAll(() => { - useFeatureFlagSpy.mockReturnValue(true) + beforeEach(() => { + setFeatureFlags([RemoteStoreFeatureFlags.WIP_APP_V2_SYSTEM_BLOCK]) }) it('should display geolocation system banner when user has not a location', () => { @@ -26,8 +25,8 @@ describe('', () => { }) describe('When wipAppV2SystemBlock feature flag deactivated', () => { - beforeAll(() => { - useFeatureFlagSpy.mockReturnValue(false) + beforeEach(() => { + setFeatureFlags() }) it('should display geolocation banner when user has not a location', () => { diff --git a/src/features/offer/components/VenueSelectionModal/VenueSelectionModal.native.test.tsx b/src/features/offer/components/VenueSelectionModal/VenueSelectionModal.native.test.tsx index a4ffa373cda..833197c73a8 100644 --- a/src/features/offer/components/VenueSelectionModal/VenueSelectionModal.native.test.tsx +++ b/src/features/offer/components/VenueSelectionModal/VenueSelectionModal.native.test.tsx @@ -1,7 +1,7 @@ import React from 'react' import { VenueListItem } from 'features/offer/components/VenueSelectionList/VenueSelectionList' -import * as useFeatureFlag from 'libs/firebase/firestore/featureFlags/useFeatureFlag' +import { setFeatureFlags } from 'libs/firebase/firestore/featureFlags/__tests__/setFeatureFlags' import { GeoCoordinates, GeolocPermissionState } from 'libs/location' import { fireEvent, render, screen } from 'tests/utils' import * as useModalAPI from 'ui/components/modals/useModal' @@ -21,8 +21,6 @@ jest.mock('libs/location/LocationWrapper', () => ({ useLocation: () => mockUseLocation(), })) -jest.spyOn(useFeatureFlag, 'useFeatureFlag').mockReturnValue(false) - jest.mock('react-native/Libraries/Animated/createAnimatedComponent', () => { return function createAnimatedComponent(Component: unknown) { return Component @@ -30,6 +28,10 @@ jest.mock('react-native/Libraries/Animated/createAnimatedComponent', () => { }) describe('', () => { + beforeEach(() => { + setFeatureFlags() + }) + const items: VenueListItem[] = [ { title: 'Envie de lire', diff --git a/src/features/offer/pages/Offer/Offer.perf.test.tsx b/src/features/offer/pages/Offer/Offer.perf.test.tsx index b29c86ed76e..e8a6e87b744 100644 --- a/src/features/offer/pages/Offer/Offer.perf.test.tsx +++ b/src/features/offer/pages/Offer/Offer.perf.test.tsx @@ -10,7 +10,7 @@ import { mockedAlgoliaOffersWithSameArtistResponse, mockedAlgoliaResponse, } from 'libs/algolia/fixtures/algoliaFixtures' -import * as useFeatureFlag from 'libs/firebase/firestore/featureFlags/useFeatureFlag' +import { setFeatureFlags } from 'libs/firebase/firestore/featureFlags/__tests__/setFeatureFlags' import { Network } from 'libs/share/types' import { subcategoriesDataTest } from 'libs/subcategories/fixtures/subcategoriesResponse' import { mockServer } from 'tests/mswServer' @@ -42,7 +42,6 @@ jest.mock('react-native/Libraries/Animated/createAnimatedComponent', () => { jest.unmock('react-native/Libraries/Animated/createAnimatedComponent') jest.useFakeTimers() -jest.spyOn(useFeatureFlag, 'useFeatureFlag').mockReturnValue(false) jest.mock('libs/network/NetInfoWrapper') useRoute.mockReturnValue({ @@ -61,6 +60,7 @@ jest.setTimeout(TEST_TIMEOUT_IN_MS) describe('', () => { beforeEach(() => { + setFeatureFlags() // We mock server instead of hooks to test the real behavior of the component. mockServer.getApi(`/v2/offer/${offerResponseSnap.id}`, { requestOptions: { persist: true }, diff --git a/src/features/profile/pages/Profile.native.test.tsx b/src/features/profile/pages/Profile.native.test.tsx index 9f8b6e477ce..9c1bb3bddda 100644 --- a/src/features/profile/pages/Profile.native.test.tsx +++ b/src/features/profile/pages/Profile.native.test.tsx @@ -17,7 +17,7 @@ import { beneficiaryUser, nonBeneficiaryUser } from 'fixtures/user' import { analytics } from 'libs/analytics/provider' import { env } from 'libs/environment/env' import { setFeatureFlags } from 'libs/firebase/firestore/featureFlags/__tests__/setFeatureFlags' -import * as useFeatureFlag from 'libs/firebase/firestore/featureFlags/useFeatureFlag' +import { RemoteStoreFeatureFlags } from 'libs/firebase/firestore/types' import { DEFAULT_REMOTE_CONFIG } from 'libs/firebase/remoteConfig/remoteConfig.constants' import * as useRemoteConfigContext from 'libs/firebase/remoteConfig/RemoteConfigProvider' import { @@ -97,7 +97,6 @@ const useVersionSpy = jest.spyOn(useVersion, 'useVersion').mockReturnValue('Vers const shareSpy = jest.spyOn(Share, 'share').mockResolvedValue({ action: Share.sharedAction }) -const mockUseFeatureFlag = jest.spyOn(useFeatureFlag, 'useFeatureFlag').mockReturnValue(false) const useRemoteConfigContextSpy = jest.spyOn(useRemoteConfigContext, 'useRemoteConfigContext') jest.mock('libs/firebase/analytics/analytics') @@ -162,7 +161,7 @@ describe('Profile component', () => { describe('achievements banner', () => { beforeEach(() => { - mockUseFeatureFlag.mockReturnValue(true) + setFeatureFlags([RemoteStoreFeatureFlags.ENABLE_ACHIEVEMENTS]) }) it('should show banner when FF is enabled and user is a beneficiary', () => { diff --git a/src/features/search/components/CategoriesListDumb/CategoriesListDumb.web.test.tsx b/src/features/search/components/CategoriesListDumb/CategoriesListDumb.web.test.tsx index c00691e6131..f46aa620185 100644 --- a/src/features/search/components/CategoriesListDumb/CategoriesListDumb.web.test.tsx +++ b/src/features/search/components/CategoriesListDumb/CategoriesListDumb.web.test.tsx @@ -1,10 +1,8 @@ import React from 'react' import { CategoriesListDumb } from 'features/search/components/CategoriesListDumb/CategoriesListDumb' -import * as useFeatureFlag from 'libs/firebase/firestore/featureFlags/useFeatureFlag' import { render, screen } from 'tests/utils/web' -jest.spyOn(useFeatureFlag, 'useFeatureFlag').mockReturnValue(true) jest.mock('libs/firebase/remoteConfig/remoteConfig.services') describe('CategoriesListDumb', () => { diff --git a/src/features/search/components/SearchHeader/SearchHeader.native.test.tsx b/src/features/search/components/SearchHeader/SearchHeader.native.test.tsx index c37b5c55412..73d8da1200c 100644 --- a/src/features/search/components/SearchHeader/SearchHeader.native.test.tsx +++ b/src/features/search/components/SearchHeader/SearchHeader.native.test.tsx @@ -5,12 +5,10 @@ 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 * as useFeatureFlag from 'libs/firebase/firestore/featureFlags/useFeatureFlag' +import { setFeatureFlags } from 'libs/firebase/firestore/featureFlags/__tests__/setFeatureFlags' import { LocationLabel } from 'libs/location/types' import { render, screen, waitFor, within } from 'tests/utils' -jest.spyOn(useFeatureFlag, 'useFeatureFlag').mockReturnValue(false) - jest.mock('libs/firebase/analytics/analytics') const mockData = { pages: [{ nbHits: 0, hits: [], page: 0 }] } @@ -58,6 +56,7 @@ jest.mock('features/navigation/TabBar/routes') describe('SearchHeader component', () => { beforeEach(() => { setSettings() + setFeatureFlags() }) it('should render SearchHeader', async () => { diff --git a/src/features/search/components/SearchList/SearchList.native.test.tsx b/src/features/search/components/SearchList/SearchList.native.test.tsx index 13f202fc52e..9cbeebd9d6d 100644 --- a/src/features/search/components/SearchList/SearchList.native.test.tsx +++ b/src/features/search/components/SearchList/SearchList.native.test.tsx @@ -6,7 +6,6 @@ import { SearchList } from 'features/search/components/SearchList/SearchList' import { initialSearchState } from 'features/search/context/reducer' import { SearchListProps } from 'features/search/types' import { mockedAlgoliaResponse } from 'libs/algolia/fixtures/algoliaFixtures' -import * as useFeatureFlag from 'libs/firebase/firestore/featureFlags/useFeatureFlag' import { Offer } from 'shared/offer/types' import { render } from 'tests/utils' @@ -15,8 +14,6 @@ const mockNbHits = mockedAlgoliaResponse.nbHits const mockUsePreviousRoute: jest.Mock | null> = usePreviousRoute -jest.spyOn(useFeatureFlag, 'useFeatureFlag').mockReturnValue(true) - const mockSearchState = initialSearchState jest.mock('features/search/context/SearchWrapper', () => ({ useSearch: () => ({ diff --git a/src/features/search/pages/SearchLanding/SearchLanding.perf.test.tsx b/src/features/search/pages/SearchLanding/SearchLanding.perf.test.tsx index 5c1fa3d794a..9f094c033ce 100644 --- a/src/features/search/pages/SearchLanding/SearchLanding.perf.test.tsx +++ b/src/features/search/pages/SearchLanding/SearchLanding.perf.test.tsx @@ -5,7 +5,7 @@ import { SubcategoriesResponseModelv2 } from 'api/gen' import { SearchWrapper } from 'features/search/context/SearchWrapper' import { mockSuggestionHits } from 'features/search/fixtures/algolia' import { SearchLanding } from 'features/search/pages/SearchLanding/SearchLanding' -import * as useFeatureFlag from 'libs/firebase/firestore/featureFlags/useFeatureFlag' +import { setFeatureFlags } from 'libs/firebase/firestore/featureFlags/__tests__/setFeatureFlags' import { subcategoriesDataTest } from 'libs/subcategories/fixtures/subcategoriesResponse' import { mockServer } from 'tests/mswServer' import { reactQueryProviderHOC } from 'tests/reactQueryProviderHOC' @@ -16,8 +16,6 @@ jest.mock('features/navigation/TabBar/routes') jest.mock('react-native/Libraries/Animated/NativeAnimatedHelper') -jest.spyOn(useFeatureFlag, 'useFeatureFlag').mockReturnValue(true) - jest.mock('features/favorites/context/FavoritesWrapper') jest.mock('react-instantsearch-core', () => ({ @@ -37,6 +35,7 @@ jest.setTimeout(TEST_TIMEOUT_IN_MS) describe('', () => { describe('Search Landing Page -', () => { beforeAll(() => { + setFeatureFlags() useRoute.mockReturnValue({ params: {} }) }) diff --git a/src/features/search/pages/SearchResults/SearchResults.native.test.tsx b/src/features/search/pages/SearchResults/SearchResults.native.test.tsx index 6019f004715..7549ee98a8a 100644 --- a/src/features/search/pages/SearchResults/SearchResults.native.test.tsx +++ b/src/features/search/pages/SearchResults/SearchResults.native.test.tsx @@ -11,7 +11,7 @@ import { SearchResults } from 'features/search/pages/SearchResults/SearchResults import { SearchState } from 'features/search/types' import { analytics } from 'libs/analytics/provider' import { env } from 'libs/environment/env' -import * as useFeatureFlag from 'libs/firebase/firestore/featureFlags/useFeatureFlag' +import { setFeatureFlags } from 'libs/firebase/firestore/featureFlags/__tests__/setFeatureFlags' import { ILocationContext, Position } from 'libs/location' import { LocationMode } from 'libs/location/types' import { useNetInfoContext as useNetInfoContextDefault } from 'libs/network/NetInfoWrapper' @@ -20,8 +20,6 @@ import { mockedSuggestedVenue } from 'libs/venue/fixtures/mockedSuggestedVenues' import { reactQueryProviderHOC } from 'tests/reactQueryProviderHOC' import { render, screen, userEvent, waitFor } from 'tests/utils' -jest.spyOn(useFeatureFlag, 'useFeatureFlag').mockReturnValue(false) - const venue = mockedSuggestedVenue const mockSearchState: SearchState = { @@ -224,6 +222,10 @@ const user = userEvent.setup() jest.useFakeTimers() describe('', () => { + beforeEach(() => { + setFeatureFlags() + }) + mockUseNetInfoContext.mockReturnValue({ isConnected: true }) afterEach(() => { diff --git a/src/features/search/pages/SearchResults/SearchResults.perf.test.tsx b/src/features/search/pages/SearchResults/SearchResults.perf.test.tsx index faef64b2e83..79a6c38b9d8 100644 --- a/src/features/search/pages/SearchResults/SearchResults.perf.test.tsx +++ b/src/features/search/pages/SearchResults/SearchResults.perf.test.tsx @@ -7,7 +7,7 @@ import { SearchWrapper } from 'features/search/context/SearchWrapper' import { mockSuggestionHits } from 'features/search/fixtures/algolia' import { SearchResults } from 'features/search/pages/SearchResults/SearchResults' import { mockedAlgoliaResponse } from 'libs/algolia/fixtures/algoliaFixtures' -import * as useFeatureFlag from 'libs/firebase/firestore/featureFlags/useFeatureFlag' +import { setFeatureFlags } from 'libs/firebase/firestore/featureFlags/__tests__/setFeatureFlags' import { subcategoriesDataTest } from 'libs/subcategories/fixtures/subcategoriesResponse' import { mockServer } from 'tests/mswServer' import { reactQueryProviderHOC } from 'tests/reactQueryProviderHOC' @@ -18,8 +18,6 @@ jest.mock('features/navigation/TabBar/routes') jest.mock('react-native/Libraries/Animated/NativeAnimatedHelper') -jest.spyOn(useFeatureFlag, 'useFeatureFlag').mockReturnValue(false) - jest.mock('react-instantsearch-core', () => ({ ...jest.requireActual('react-instantsearch-core'), // API key used for test does not exist so we need to mock this part @@ -42,6 +40,7 @@ describe('', () => { }) beforeEach(() => { + setFeatureFlags() mockServer.getApi('/v1/subcategories/v2', subcategoriesDataTest) }) diff --git a/src/features/search/pages/modals/CategoriesModal/CategoriesModal.native.test.tsx b/src/features/search/pages/modals/CategoriesModal/CategoriesModal.native.test.tsx index 3de01eadfca..4ecf8594b62 100644 --- a/src/features/search/pages/modals/CategoriesModal/CategoriesModal.native.test.tsx +++ b/src/features/search/pages/modals/CategoriesModal/CategoriesModal.native.test.tsx @@ -8,7 +8,8 @@ import { FilterBehaviour } from 'features/search/enums' import { BooksNativeCategoriesEnum, SearchState } from 'features/search/types' import { algoliaFacets } from 'libs/algolia/fixtures/algoliaFacets' import { FacetData } from 'libs/algolia/types' -import * as useFeatureFlag from 'libs/firebase/firestore/featureFlags/useFeatureFlag' +import { setFeatureFlags } from 'libs/firebase/firestore/featureFlags/__tests__/setFeatureFlags' +import { RemoteStoreFeatureFlags } from 'libs/firebase/firestore/types' import { PLACEHOLDER_DATA } from 'libs/subcategories/placeholderData' import { fireEvent, render, screen, waitFor } from 'tests/utils' @@ -36,8 +37,6 @@ jest.mock('libs/subcategories/useSubcategories', () => ({ const mockHideModal = jest.fn() -const mockUseFeatureFlag = jest.spyOn(useFeatureFlag, 'useFeatureFlag').mockReturnValue(true) - jest.mock('libs/firebase/analytics/analytics') jest.mock('react-native/Libraries/Animated/createAnimatedComponent', () => { @@ -47,6 +46,10 @@ jest.mock('react-native/Libraries/Animated/createAnimatedComponent', () => { }) describe('', () => { + beforeEach(() => { + setFeatureFlags() + }) + afterEach(() => { mockData = PLACEHOLDER_DATA }) @@ -266,8 +269,8 @@ describe('', () => { }) describe('When wipDisplaySearchNbFacetResults feature flag is activated', () => { - beforeAll(() => { - mockUseFeatureFlag.mockReturnValue(true) + beforeEach(() => { + setFeatureFlags([RemoteStoreFeatureFlags.WIP_DISPLAY_SEARCH_NB_FACET_RESULTS]) }) it('should display number of results on each category', () => { @@ -281,8 +284,8 @@ describe('', () => { }) describe('When wipDisplaySearchNbFacetResults feature flag is not activated', () => { - beforeAll(() => { - mockUseFeatureFlag.mockReturnValue(false) + beforeEach(() => { + setFeatureFlags() }) it('should not display number of results on each category', () => { diff --git a/src/features/search/pages/modals/CategoriesModal/CategoriesModal.web.test.tsx b/src/features/search/pages/modals/CategoriesModal/CategoriesModal.web.test.tsx index e5657d21ba9..11317d9c369 100644 --- a/src/features/search/pages/modals/CategoriesModal/CategoriesModal.web.test.tsx +++ b/src/features/search/pages/modals/CategoriesModal/CategoriesModal.web.test.tsx @@ -2,15 +2,13 @@ import React from 'react' import { initialSearchState } from 'features/search/context/reducer' import { FilterBehaviour } from 'features/search/enums' -import * as useFeatureFlag from 'libs/firebase/firestore/featureFlags/useFeatureFlag' +import { setFeatureFlags } from 'libs/firebase/firestore/featureFlags/__tests__/setFeatureFlags' import { checkAccessibilityFor, render, screen } from 'tests/utils/web' import { CategoriesModal } from './CategoriesModal' jest.mock('libs/subcategories/useSubcategories') -jest.spyOn(useFeatureFlag, 'useFeatureFlag').mockReturnValue(true) - const mockSearchState = initialSearchState jest.mock('features/search/context/SearchWrapper', () => ({ useSearch: () => ({ @@ -23,6 +21,10 @@ jest.mock('libs/firebase/analytics/analytics') jest.mock('libs/firebase/remoteConfig/remoteConfig.services') describe('', () => { + beforeEach(() => { + setFeatureFlags() + }) + it('should display mobile header modal if mobile viewport', () => { render( ', () => { beforeEach(() => { + setFeatureFlags() // We mock only the first call to canOpenURL so we can wait for instagram to be displayed // This way we avoid act warning when the calls to openURL are made canOpenURLSpy.mockResolvedValueOnce(true) diff --git a/src/features/venue/components/VenueTopComponent/VenueTopComponent.native.test.tsx b/src/features/venue/components/VenueTopComponent/VenueTopComponent.native.test.tsx index c09cb9c9807..880327a3aa0 100644 --- a/src/features/venue/components/VenueTopComponent/VenueTopComponent.native.test.tsx +++ b/src/features/venue/components/VenueTopComponent/VenueTopComponent.native.test.tsx @@ -7,13 +7,11 @@ import { VenueResponse, VenueTypeCodeKey } from 'api/gen' import { VenueTopComponent } from 'features/venue/components/VenueTopComponent/VenueTopComponent' import { venueDataTest } from 'features/venue/fixtures/venueDataTest' import { analytics } from 'libs/analytics/provider' -import * as useFeatureFlag from 'libs/firebase/firestore/featureFlags/useFeatureFlag' +import { setFeatureFlags } from 'libs/firebase/firestore/featureFlags/__tests__/setFeatureFlags' import { ILocationContext, useLocation } from 'libs/location' import { reactQueryProviderHOC } from 'tests/reactQueryProviderHOC' import { render, screen, userEvent } from 'tests/utils' -jest.spyOn(useFeatureFlag, 'useFeatureFlag').mockReturnValue(false) - jest.mock('libs/firebase/analytics/analytics') jest.mock('libs/location') const mockUseLocation = jest.mocked(useLocation) @@ -24,6 +22,10 @@ const user = userEvent.setup() jest.useFakeTimers() describe('', () => { + beforeEach(() => { + setFeatureFlags() + }) + it('should display full venue address', async () => { render() @@ -90,7 +92,6 @@ describe('', () => { it('should render dynamics opening hours when feature flag is enabled', async () => { mockdate.set(new Date('2024-05-31T08:31:00')) - jest.spyOn(useFeatureFlag, 'useFeatureFlag').mockReturnValueOnce(true) render(reactQueryProviderHOC()) @@ -104,7 +105,6 @@ describe('', () => { }) it('should NOT render dynamics opening hours when venue doesn t have openingHours', async () => { - jest.spyOn(useFeatureFlag, 'useFeatureFlag').mockReturnValueOnce(true) const venue = { ...venueDataTest, openingHours: undefined, diff --git a/src/features/venue/components/VenueTopComponent/VenueTopComponent.web.test.tsx b/src/features/venue/components/VenueTopComponent/VenueTopComponent.web.test.tsx index d11a97caa92..4999b1ab009 100644 --- a/src/features/venue/components/VenueTopComponent/VenueTopComponent.web.test.tsx +++ b/src/features/venue/components/VenueTopComponent/VenueTopComponent.web.test.tsx @@ -2,13 +2,11 @@ import React from 'react' import { VenueTopComponent } from 'features/venue/components/VenueTopComponent/VenueTopComponent' import { venueDataTest } from 'features/venue/fixtures/venueDataTest' -import * as useFeatureFlag from 'libs/firebase/firestore/featureFlags/useFeatureFlag' +import { setFeatureFlags } from 'libs/firebase/firestore/featureFlags/__tests__/setFeatureFlags' import { useLocation } from 'libs/location' import { reactQueryProviderHOC } from 'tests/reactQueryProviderHOC' import { fireEvent, render, screen } from 'tests/utils/web' -jest.spyOn(useFeatureFlag, 'useFeatureFlag').mockReturnValue(false) - jest.mock('libs/firebase/analytics/analytics') jest.mock('libs/firebase/remoteConfig/remoteConfig.services') jest.mock('libs/location') @@ -16,6 +14,10 @@ jest.mocked(useLocation) jest.mock('@react-native-clipboard/clipboard') describe('', () => { + beforeEach(() => { + setFeatureFlags() + }) + it('should display preview in modal', async () => { render( reactQueryProviderHOC( diff --git a/src/features/venue/pages/Venue/Venue.perf.test.tsx b/src/features/venue/pages/Venue/Venue.perf.test.tsx index 2d127de3dd9..6738e870bc3 100644 --- a/src/features/venue/pages/Venue/Venue.perf.test.tsx +++ b/src/features/venue/pages/Venue/Venue.perf.test.tsx @@ -6,7 +6,7 @@ import { SubcategoriesResponseModelv2, SubcategoryIdEnum, VenueResponse } from ' import { useGTLPlaylists } from 'features/gtlPlaylist/hooks/useGTLPlaylists' import { venueDataTest } from 'features/venue/fixtures/venueDataTest' import { Venue } from 'features/venue/pages/Venue/Venue' -import * as useFeatureFlag from 'libs/firebase/firestore/featureFlags/useFeatureFlag' +import { setFeatureFlags } from 'libs/firebase/firestore/featureFlags/__tests__/setFeatureFlags' import { subcategoriesDataTest } from 'libs/subcategories/fixtures/subcategoriesResponse' import { Offer } from 'shared/offer/types' import { mockServer } from 'tests/mswServer' @@ -19,8 +19,6 @@ jest.mock('react-native/Libraries/Animated/NativeAnimatedHelper') jest.mock('features/search/context/SearchWrapper') -jest.spyOn(useFeatureFlag, 'useFeatureFlag').mockReturnValue(false) - useRoute.mockImplementation(() => ({ params: { id: venueDataTest.id } })) jest.mock('features/gtlPlaylist/hooks/useGTLPlaylists') @@ -62,6 +60,7 @@ jest.setTimeout(TEST_TIMEOUT_IN_MS) describe('', () => { beforeEach(() => { + setFeatureFlags() mockServer.getApi('/v1/subcategories/v2', subcategoriesDataTest) mockServer.getApi(`/v1/venue/${venueDataTest.id}`, { responseOptions: { data: venueDataTest }, diff --git a/src/features/venueMap/components/VenueMapView/VenueMapView.native.test.tsx b/src/features/venueMap/components/VenueMapView/VenueMapView.native.test.tsx index 6033616b5c4..699ee91a75d 100644 --- a/src/features/venueMap/components/VenueMapView/VenueMapView.native.test.tsx +++ b/src/features/venueMap/components/VenueMapView/VenueMapView.native.test.tsx @@ -16,7 +16,6 @@ import { initialVenuesActions } from 'features/venueMap/store/initialVenuesStore 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 * as useFeatureFlag from 'libs/firebase/firestore/featureFlags/useFeatureFlag' import { RemoteStoreFeatureFlags } from 'libs/firebase/firestore/types' import { reactQueryProviderHOC } from 'tests/reactQueryProviderHOC' import { act, fireEvent, render, screen, userEvent, waitFor } from 'tests/utils' @@ -32,8 +31,6 @@ jest.mock('@react-navigation/native', () => ({ useFocusEffect: jest.fn(), })) -const useFeatureFlagSpy = jest.spyOn(useFeatureFlag, 'useFeatureFlag') - jest.mock('features/venueMap/useGetAllVenues') const mockUseGetAllVenues = useGetAllVenues as jest.Mock @@ -103,8 +100,7 @@ describe('', () => { beforeEach(() => { jest.useFakeTimers() mockUseVenueOffers() - - useFeatureFlagSpy.mockReturnValue(true) + setFeatureFlags([RemoteStoreFeatureFlags.WIP_OFFERS_IN_BOTTOM_SHEET]) Object.assign(constants.MARKER_LABEL_VISIBILITY_LIMIT, { zoom: 1, altitude: Infinity, diff --git a/src/features/venueMap/pages/VenueMap/VenueMap.native.test.tsx b/src/features/venueMap/pages/VenueMap/VenueMap.native.test.tsx index c6bbd3e179e..8e3e234d16e 100644 --- a/src/features/venueMap/pages/VenueMap/VenueMap.native.test.tsx +++ b/src/features/venueMap/pages/VenueMap/VenueMap.native.test.tsx @@ -5,12 +5,12 @@ import * as useGoBack from 'features/navigation/useGoBack' import { FILTERS_VENUE_TYPE_MAPPING } from 'features/venueMap/constant' import { VenueMap } from 'features/venueMap/pages/VenueMap/VenueMap' import { useVenueTypeCode, venueTypeCodeActions } from 'features/venueMap/store/venueTypeCodeStore' -import * as useFeatureFlag from 'libs/firebase/firestore/featureFlags/useFeatureFlag' +import { setFeatureFlags } from 'libs/firebase/firestore/featureFlags/__tests__/setFeatureFlags' +import { RemoteStoreFeatureFlags } from 'libs/firebase/firestore/types' import { reactQueryProviderHOC } from 'tests/reactQueryProviderHOC' import { fireEvent, render, screen } from 'tests/utils' jest.mock('features/venue/api/useVenueOffers') -jest.spyOn(useFeatureFlag, 'useFeatureFlag').mockReturnValue(true) const mockGoBack = jest.fn() jest.spyOn(useGoBack, 'useGoBack').mockReturnValue({ @@ -47,6 +47,10 @@ const VENUE_TYPE = VenueTypeCodeKey.MOVIE describe('', () => { beforeEach(() => { + setFeatureFlags([ + RemoteStoreFeatureFlags.WIP_OFFERS_IN_BOTTOM_SHEET, + RemoteStoreFeatureFlags.WIP_VENUE_MAP_TYPE_FILTER_V2, + ]) // TODO(PC-34435): add tests for WIP_VENUE_MAP_HIDDEN_POI and when the wipOffersInBottomSheet and wipVenueMapTypeFilterV2 are off mockUseVenueTypeCode.mockReturnValue(VENUE_TYPE) }) diff --git a/src/libs/hooks/useShowReview.native.test.tsx b/src/libs/hooks/useShowReview.native.test.tsx index 4ec37ef5a3b..5344eb64464 100644 --- a/src/libs/hooks/useShowReview.native.test.tsx +++ b/src/libs/hooks/useShowReview.native.test.tsx @@ -2,12 +2,11 @@ import { AppState } from 'react-native' import InAppReview from 'react-native-in-app-review' import { useReviewInAppInformation } from 'features/bookOffer/helpers/useReviewInAppInformation' -import * as useFeatureFlag from 'libs/firebase/firestore/featureFlags/useFeatureFlag' +import { setFeatureFlags } from 'libs/firebase/firestore/featureFlags/__tests__/setFeatureFlags' +import { RemoteStoreFeatureFlags } from 'libs/firebase/firestore/types' import { useShowReview } from 'libs/hooks/useShowReview' import { renderHook, waitFor } from 'tests/utils' -const useFeatureFlagSpy = jest.spyOn(useFeatureFlag, 'useFeatureFlag').mockReturnValue(false) - jest.unmock('libs/appState') const appStateSpy = jest.spyOn(AppState, 'addEventListener') @@ -23,6 +22,10 @@ const mockUpdateInformationWhenReviewHasBeenRequested = jest.fn() jest.useFakeTimers() describe('useShowReview', () => { + beforeEach(() => { + setFeatureFlags() + }) + it('should show the review when it is available and we want to show it', () => { mockIsAvailable.mockReturnValueOnce(true) mockUseReviewInAppInformation.mockReturnValueOnce({ shouldReviewBeRequested: true }) @@ -97,7 +100,7 @@ describe('useShowReview', () => { }) it('should show the review when we enable store review', () => { - useFeatureFlagSpy.mockReturnValueOnce(false) + setFeatureFlags() renderHook(useShowReview) @@ -107,7 +110,7 @@ describe('useShowReview', () => { }) it('should not show the review when app is running in the background', () => { - useFeatureFlagSpy.mockReturnValueOnce(false) + setFeatureFlags() renderHook(useShowReview) @@ -121,7 +124,7 @@ describe('useShowReview', () => { }) it('should not show review when we disable store review', () => { - useFeatureFlagSpy.mockReturnValueOnce(true) + setFeatureFlags([RemoteStoreFeatureFlags.WIP_DISABLE_STORE_REVIEW]) renderHook(useShowReview) diff --git a/src/libs/hooks/useShowReview.web.test.tsx b/src/libs/hooks/useShowReview.web.test.tsx index 7526151096d..b35292129b4 100644 --- a/src/libs/hooks/useShowReview.web.test.tsx +++ b/src/libs/hooks/useShowReview.web.test.tsx @@ -2,12 +2,10 @@ import React from 'react' import InAppReview from 'react-native-in-app-review' import { useReviewInAppInformation } from 'features/bookOffer/helpers/useReviewInAppInformation' -import * as useFeatureFlag from 'libs/firebase/firestore/featureFlags/useFeatureFlag' +import { setFeatureFlags } from 'libs/firebase/firestore/featureFlags/__tests__/setFeatureFlags' import { useShowReview } from 'libs/hooks/useShowReview' import { render } from 'tests/utils/web' -jest.spyOn(useFeatureFlag, 'useFeatureFlag').mockReturnValue(false) - const mockRequestInAppReview = InAppReview.RequestInAppReview as jest.Mock jest.mock('features/bookOffer/helpers/useReviewInAppInformation') @@ -21,6 +19,7 @@ const TestReviewComponent = () => { describe('useShowReview', () => { it('should not show the review in web even if it should be requested in native', () => { + setFeatureFlags() mockUseReviewInAppInformation.mockReturnValueOnce({ shouldReviewBeRequested: true }) render() diff --git a/src/shared/Banners/GeolocationBanner.native.test.tsx b/src/shared/Banners/GeolocationBanner.native.test.tsx index 344f7069dbd..951f05bb9fb 100644 --- a/src/shared/Banners/GeolocationBanner.native.test.tsx +++ b/src/shared/Banners/GeolocationBanner.native.test.tsx @@ -1,20 +1,19 @@ import React from 'react' -import * as useFeatureFlag from 'libs/firebase/firestore/featureFlags/useFeatureFlag' +import { setFeatureFlags } from 'libs/firebase/firestore/featureFlags/__tests__/setFeatureFlags' +import { RemoteStoreFeatureFlags } from 'libs/firebase/firestore/types' import { GeolocPermissionState, useLocation } from 'libs/location' import { requestGeolocPermission, showGeolocPermissionModal } from 'libs/location/__mocks__' import { GeolocationBanner } from 'shared/Banners/GeolocationBanner' import { fireEvent, render, screen } from 'tests/utils' -const useFeatureFlagSpy = jest.spyOn(useFeatureFlag, 'useFeatureFlag') - jest.mock('libs/location') const mockUseLocation = useLocation as jest.Mock describe('', () => { describe('When wipAppV2SystemBlock feature flag activated', () => { - beforeAll(() => { - useFeatureFlagSpy.mockReturnValue(true) + beforeEach(() => { + setFeatureFlags([RemoteStoreFeatureFlags.WIP_APP_V2_SYSTEM_BLOCK]) }) it('should display system banner for geolocation incitation', () => { @@ -35,8 +34,8 @@ describe('', () => { }) describe('When wipAppV2SystemBlock feature flag deactivated', () => { - beforeAll(() => { - useFeatureFlagSpy.mockReturnValue(false) + beforeEach(() => { + setFeatureFlags() }) it('should display generic banner for geolocation incitation', () => { diff --git a/src/shared/FeatureFlag/FeatureFlag.native.test.tsx b/src/shared/FeatureFlag/FeatureFlag.native.test.tsx index 8baa21735d5..38603fbba1f 100644 --- a/src/shared/FeatureFlag/FeatureFlag.native.test.tsx +++ b/src/shared/FeatureFlag/FeatureFlag.native.test.tsx @@ -1,18 +1,16 @@ import React from 'react' import { View } from 'react-native' -import * as useFeatureFlag from 'libs/firebase/firestore/featureFlags/useFeatureFlag' +import { setFeatureFlags } from 'libs/firebase/firestore/featureFlags/__tests__/setFeatureFlags' import { RemoteStoreFeatureFlags } from 'libs/firebase/firestore/types' import { FeatureFlag } from 'shared/FeatureFlag/FeatureFlag' import { render, screen } from 'tests/utils' -const useFeatureFlagSpy = jest.spyOn(useFeatureFlag, 'useFeatureFlag') - describe('', () => { const children = it('should display children when feature flag activated', () => { - useFeatureFlagSpy.mockReturnValueOnce(true) + setFeatureFlags([RemoteStoreFeatureFlags.WIP_STEPPER_RETRY_UBBLE]) render( {children} @@ -23,7 +21,7 @@ describe('', () => { }) it('should not display childen when feature flag deactivated', () => { - useFeatureFlagSpy.mockReturnValueOnce(false) + setFeatureFlags() render( {children}