) =>
- isLoading ? <>is loading> : <>{resourceDetails?.currentState.name}>,
- }),
-);
+ const buildWrapper = () => testWrapperBuilder().withQueryClient(queryClient).build();
+
+ beforeEach(() => {
+ queryClient = createQueryClientTest();
+ });
-describe('GeneralInformationVaultTile', () => {
it('Should render GeneralInformationVaultTile component', async () => {
- useBackupVaultDetailsMock.mockReturnValue({ data: mockVaults[0]!, isLoading: false });
- useLocationDetailsMock.mockReturnValue({ data: mockLocations[0]!, isLoading: false });
- const { container } = render();
+ queryClient.setQueryData(queryKeys.vaults.detail(vault.id), vault);
+ queryClient.setQueryData(
+ queryKeys.locations.detail(vault.currentState.region),
+ mockLocations[0]!,
+ );
+
+ const wrapper = await buildWrapper();
+
+ const { container } = render(, { wrapper });
await expect(container).toBeAccessible();
- expect(screen.getByText(mockVaults[0]!.currentState.name)).toBeVisible();
+ expect(screen.getByText(vault.currentState.name)).toBeVisible();
});
- it('Should render GeneralInformationVaultTile component', async () => {
- useBackupVaultDetailsMock.mockReturnValue({ data: mockVaults[0]!, isLoading: true });
- useLocationDetailsMock.mockReturnValue({ data: mockLocations[0]!, isLoading: true });
- const { container } = render();
+ it('Should render GeneralInformationVaultTile component with skeletons when loading', async () => {
+ // Don't seed the cache so queries stay in loading state
+
+ const wrapper = await buildWrapper();
+
+ const { container } = render(, { wrapper });
await expect(container).toBeAccessible();
diff --git a/packages/manager/modules/backup-agent/src/pages/vaults/dashboard/general-information/_components/__tests__/SubscriptionTile.test.tsx b/packages/manager/modules/backup-agent/src/pages/vaults/dashboard/general-information/_components/__tests__/SubscriptionTile.test.tsx
index 84c8c8da1873..fa06373b237d 100644
--- a/packages/manager/modules/backup-agent/src/pages/vaults/dashboard/general-information/_components/__tests__/SubscriptionTile.test.tsx
+++ b/packages/manager/modules/backup-agent/src/pages/vaults/dashboard/general-information/_components/__tests__/SubscriptionTile.test.tsx
@@ -3,10 +3,12 @@ import { vi } from 'vitest';
import { NAMESPACES } from '@ovh-ux/manager-common-translations';
+import { queryKeys } from '@/data/queries/queryKeys';
import { BACKUP_AGENT_NAMESPACES } from '@/lib';
-import { TENANTS_MOCKS } from '@/mocks/tenant/tenants.mock';
import { mockVaults } from '@/mocks/vaults/vaults.mock';
import { VAULT_PLAN_CODE } from '@/module.constants';
+import { testWrapperBuilder } from '@/test-utils/testWrapperBuilder';
+import { createQueryClientTest } from '@/test-utils/testWrapperProviders';
import { SubscriptionTile } from '../subscription-tile/SubscriptionTile.component';
@@ -16,27 +18,6 @@ const LABELS_VISIBLES = [
`${BACKUP_AGENT_NAMESPACES.VAULT_DASHBOARD}:type_billing`,
];
-vi.mock('@/data/hooks/consumption/useServiceConsumption', () => {
- return {
- useGetServiceConsumptionOptions: vi.fn().mockReturnValue(vi.fn()),
- };
-});
-
-const { useBackupVaultDetailsMock, useQuery } = vi.hoisted(() => ({
- useBackupVaultDetailsMock: vi.fn(),
- useQuery: vi.fn(),
-}));
-
-vi.mock('@/data/hooks/vaults/getVaultDetails', () => ({
- useBackupVaultDetails: useBackupVaultDetailsMock,
-}));
-
-vi.mock('@tanstack/react-query', () => {
- return {
- useQuery: useQuery,
- };
-});
-
vi.mock('react-i18next', () => ({
useTranslation: vi.fn().mockReturnValue({
t: vi.fn().mockImplementation((key: string) => key),
@@ -46,19 +27,22 @@ vi.mock('react-i18next', () => ({
vi.mock('@/hooks/useRequiredParams', () => {
return {
useRequiredParams: vi.fn().mockReturnValue({
- tenantId: TENANTS_MOCKS[0]!.id,
+ vaultId: mockVaults[0]!.id,
}),
};
});
describe('SubscriptionTile', () => {
it('Should render SubscriptionTile component', async () => {
- useBackupVaultDetailsMock.mockReturnValue({ data: mockVaults[0]!, isLoading: false });
- useQuery.mockReturnValue({
- data: [{ planCode: VAULT_PLAN_CODE, quantity: 100, price: { text: '100 €' } }],
- isPending: false,
- });
- const { container } = render();
+ const queryClient = createQueryClientTest();
+ queryClient.setQueryData(queryKeys.vaults.detail(mockVaults[0]!.id), mockVaults[0]!);
+ queryClient.setQueryData(queryKeys.consumption.byResource(mockVaults[0]!.id), [
+ { planCode: VAULT_PLAN_CODE, quantity: 100, price: { text: '100 €' } },
+ ]);
+
+ const wrapper = await testWrapperBuilder().withQueryClient(queryClient).build();
+
+ const { container } = render(, { wrapper });
await expect(container).toBeAccessible();
diff --git a/packages/manager/modules/backup-agent/src/pages/vaults/dashboard/general-information/_components/general-information-vault-tile/GeneralInformationVaultTile.component.tsx b/packages/manager/modules/backup-agent/src/pages/vaults/dashboard/general-information/_components/general-information-vault-tile/GeneralInformationVaultTile.component.tsx
index 0418d49127e3..efc33a3273e0 100644
--- a/packages/manager/modules/backup-agent/src/pages/vaults/dashboard/general-information/_components/general-information-vault-tile/GeneralInformationVaultTile.component.tsx
+++ b/packages/manager/modules/backup-agent/src/pages/vaults/dashboard/general-information/_components/general-information-vault-tile/GeneralInformationVaultTile.component.tsx
@@ -1,3 +1,4 @@
+import { useQuery, useQueryClient } from '@tanstack/react-query';
import { useTranslation } from 'react-i18next';
import { OdsBadge, OdsSkeleton, OdsText } from '@ovhcloud/ods-components/react';
@@ -7,8 +8,8 @@ import { ManagerTile } from '@ovh-ux/manager-react-components';
import { BACKUP_AGENT_NAMESPACES } from '@/BackupAgent.translations';
import { ResourceStatusBadge } from '@/components/ResourceStatusBadge/ResourceStatusBadge.component';
-import { useLocationDetails } from '@/data/hooks/location/getLocationDetails';
-import { useBackupVaultDetails } from '@/data/hooks/vaults/getVaultDetails';
+import { locationsQueries } from '@/data/queries/locations.queries';
+import { vaultsQueries } from '@/data/queries/vaults.queries';
import { VAULT_DEFAULT_IMMUTABILITY } from '@/module.constants';
type GeneralInformationVaultTileProps = {
@@ -23,10 +24,15 @@ export function GeneralInformationVaultTile({ vaultId }: GeneralInformationVault
'dashboard',
BACKUP_AGENT_NAMESPACES.VAULT_DASHBOARD,
]);
- const { data: vault, isLoading: isLoadingVault } = useBackupVaultDetails({ vaultId });
- const { data: locationData, isLoading: isLoadingLocation } = useLocationDetails(
- vault?.currentState.region,
+ const queryClient = useQueryClient();
+ const { data: vault, isPending: isLoadingVault } = useQuery(
+ vaultsQueries.withClient(queryClient).detail(vaultId),
);
+ const vaultRegion = vault?.currentState.region;
+ const { data: locationData, isPending: isLoadingLocation } = useQuery({
+ ...locationsQueries.detail(vaultRegion!),
+ enabled: !!vaultRegion,
+ });
/*
The code below is a copy of GeneralInformationTile component, made specifically for vaults.
diff --git a/packages/manager/modules/backup-agent/src/pages/vaults/dashboard/general-information/_components/subscription-tile/SubscriptionTile.component.tsx b/packages/manager/modules/backup-agent/src/pages/vaults/dashboard/general-information/_components/subscription-tile/SubscriptionTile.component.tsx
index da45d691dbfe..9ebeebef20f5 100644
--- a/packages/manager/modules/backup-agent/src/pages/vaults/dashboard/general-information/_components/subscription-tile/SubscriptionTile.component.tsx
+++ b/packages/manager/modules/backup-agent/src/pages/vaults/dashboard/general-information/_components/subscription-tile/SubscriptionTile.component.tsx
@@ -1,3 +1,4 @@
+import { useQuery, useQueryClient } from '@tanstack/react-query';
import { useTranslation } from 'react-i18next';
import { OdsIcon, OdsSkeleton, OdsText, OdsTooltip } from '@ovhcloud/ods-components/react';
@@ -6,7 +7,7 @@ import { NAMESPACES } from '@ovh-ux/manager-common-translations';
import { ManagerTile } from '@ovh-ux/manager-react-components';
import { BACKUP_AGENT_NAMESPACES } from '@/BackupAgent.translations';
-import { useBackupVaultDetails } from '@/data/hooks/vaults/getVaultDetails';
+import { vaultsQueries } from '@/data/queries/vaults.queries';
import { BillingType, ConsumptionDetails, ConsumptionRegionsList } from './_components';
@@ -22,7 +23,10 @@ export function SubscriptionTile({ vaultId }: SubscriptionTileProps) {
NAMESPACES.BILLING,
BACKUP_AGENT_NAMESPACES.VAULT_DASHBOARD,
]);
- const { isPending, data: vault } = useBackupVaultDetails({ vaultId });
+ const queryClient = useQueryClient();
+ const { isPending, data: vault } = useQuery(
+ vaultsQueries.withClient(queryClient).detail(vaultId),
+ );
const tooltipId = 'consumption-tooltip';
return (
diff --git a/packages/manager/modules/backup-agent/src/pages/vaults/dashboard/general-information/_components/subscription-tile/_components/BillingType.component.tsx b/packages/manager/modules/backup-agent/src/pages/vaults/dashboard/general-information/_components/subscription-tile/_components/BillingType.component.tsx
index c5cf7d67fb6c..bd7a1d859a17 100644
--- a/packages/manager/modules/backup-agent/src/pages/vaults/dashboard/general-information/_components/subscription-tile/_components/BillingType.component.tsx
+++ b/packages/manager/modules/backup-agent/src/pages/vaults/dashboard/general-information/_components/subscription-tile/_components/BillingType.component.tsx
@@ -1,4 +1,4 @@
-import { useQuery } from '@tanstack/react-query';
+import { useQuery, useQueryClient } from '@tanstack/react-query';
import { useTranslation } from 'react-i18next';
import { OdsSkeleton, OdsText } from '@ovhcloud/ods-components/react';
@@ -6,9 +6,9 @@ import { OdsSkeleton, OdsText } from '@ovhcloud/ods-components/react';
import { NAMESPACES } from '@ovh-ux/manager-common-translations';
import { BACKUP_AGENT_NAMESPACES } from '@/BackupAgent.translations';
-import { useGetServiceConsumptionOptions } from '@/data/hooks/consumption/useServiceConsumption';
+import { consumptionQueries } from '@/data/queries/consumption.queries';
+import { selectConsumptionPriceText } from '@/data/selectors/consumption.selectors';
import { useRequiredParams } from '@/hooks/useRequiredParams';
-import { VAULT_PLAN_CODE } from '@/module.constants';
import { CONSUMPTION_MAX_VALUE_IN_TB } from '../SubscriptionTile.component';
@@ -21,12 +21,13 @@ export const BillingType = () => {
BACKUP_AGENT_NAMESPACES.COMMON,
]);
const { vaultId } = useRequiredParams('vaultId');
- const { data: consumptionData, isPending } = useQuery(useGetServiceConsumptionOptions()(vaultId));
+ const queryClient = useQueryClient();
+ const { data: priceHTText = '-', isPending } = useQuery({
+ ...consumptionQueries.withClient(queryClient).byResource(vaultId),
+ select: selectConsumptionPriceText,
+ });
const bundleSize = `${CONSUMPTION_MAX_VALUE_IN_TB}${t(`${NAMESPACES.BYTES}:unit_size_TB`)}`;
- const priceHTText =
- consumptionData?.find((consumption) => consumption.planCode === VAULT_PLAN_CODE)?.price.text ??
- '-';
return (
diff --git a/packages/manager/modules/backup-agent/src/pages/vaults/dashboard/general-information/_components/subscription-tile/_components/ConsumptionDetails.component.tsx b/packages/manager/modules/backup-agent/src/pages/vaults/dashboard/general-information/_components/subscription-tile/_components/ConsumptionDetails.component.tsx
index a7772d373800..f9c64eda0f39 100644
--- a/packages/manager/modules/backup-agent/src/pages/vaults/dashboard/general-information/_components/subscription-tile/_components/ConsumptionDetails.component.tsx
+++ b/packages/manager/modules/backup-agent/src/pages/vaults/dashboard/general-information/_components/subscription-tile/_components/ConsumptionDetails.component.tsx
@@ -1,15 +1,15 @@
import { useId } from 'react';
-import { useQuery } from '@tanstack/react-query';
+import { useQuery, useQueryClient } from '@tanstack/react-query';
import { useTranslation } from 'react-i18next';
import { OdsProgressBar, OdsSkeleton, OdsText } from '@ovhcloud/ods-components/react';
import { NAMESPACES } from '@ovh-ux/manager-common-translations';
-import { useGetServiceConsumptionOptions } from '@/data/hooks/consumption/useServiceConsumption';
+import { consumptionQueries } from '@/data/queries/consumption.queries';
+import { selectConsumptionQuantity } from '@/data/selectors/consumption.selectors';
import { useRequiredParams } from '@/hooks/useRequiredParams';
-import { VAULT_PLAN_CODE } from '@/module.constants';
import { CONSUMPTION_MAX_VALUE_IN_TB } from '../SubscriptionTile.component';
@@ -17,7 +17,11 @@ export const ConsumptionDetails = () => {
const idLabel = useId();
const { t } = useTranslation([NAMESPACES.BYTES]);
const { vaultId } = useRequiredParams('vaultId');
- const { data: consumptionData, isPending } = useQuery(useGetServiceConsumptionOptions()(vaultId));
+ const queryClient = useQueryClient();
+ const { data: consumptionInGB = 0, isPending } = useQuery({
+ ...consumptionQueries.withClient(queryClient).byResource(vaultId),
+ select: selectConsumptionQuantity,
+ });
if (isPending) {
return (
@@ -27,9 +31,6 @@ export const ConsumptionDetails = () => {
);
}
-
- const consumptionInGB =
- consumptionData?.find((consumption) => consumption.planCode === VAULT_PLAN_CODE)?.quantity ?? 0;
const consumptionInTB = consumptionInGB / 1000;
const consumptionInPercentage = (consumptionInTB / CONSUMPTION_MAX_VALUE_IN_TB) * 100;
const consumptionLabel = `${consumptionInGB} ${t('unit_size_GB')} / ${CONSUMPTION_MAX_VALUE_IN_TB} ${t('unit_size_TB')} (${consumptionInPercentage}%)`;
diff --git a/packages/manager/modules/backup-agent/src/pages/vaults/dashboard/general-information/_components/subscription-tile/_components/__tests__/BillingType.test.tsx b/packages/manager/modules/backup-agent/src/pages/vaults/dashboard/general-information/_components/subscription-tile/_components/__tests__/BillingType.test.tsx
index 32e19a7c99af..d1424bde47f0 100644
--- a/packages/manager/modules/backup-agent/src/pages/vaults/dashboard/general-information/_components/subscription-tile/_components/__tests__/BillingType.test.tsx
+++ b/packages/manager/modules/backup-agent/src/pages/vaults/dashboard/general-information/_components/subscription-tile/_components/__tests__/BillingType.test.tsx
@@ -1,20 +1,13 @@
import { render } from '@testing-library/react';
-import { vi } from 'vitest';
+import { queryKeys } from '@/data/queries/queryKeys';
import { mockVaults } from '@/mocks/vaults/vaults.mock';
+import { VAULT_PLAN_CODE } from '@/module.constants';
+import { testWrapperBuilder } from '@/test-utils/testWrapperBuilder';
+import { createQueryClientTest } from '@/test-utils/testWrapperProviders';
import { BillingType } from '../BillingType.component';
-const { useQuery } = vi.hoisted(() => ({
- useQuery: vi.fn(),
-}));
-
-vi.mock('@tanstack/react-query', () => {
- return {
- useQuery: useQuery,
- };
-});
-
vi.mock('@/hooks/useRequiredParams', () => {
return {
useRequiredParams: vi.fn().mockReturnValue({
@@ -23,16 +16,16 @@ vi.mock('@/hooks/useRequiredParams', () => {
};
});
-vi.mock('@/data/hooks/consumption/useServiceConsumption', () => {
- return {
- useGetServiceConsumptionOptions: vi.fn().mockReturnValue(vi.fn()),
- };
-});
-
describe('BillingType component a11y', () => {
it('Should render BillingType component', async () => {
- useQuery.mockReturnValue({ data: [], isPending: false });
- const { container } = render();
+ const queryClient = createQueryClientTest();
+ queryClient.setQueryData(queryKeys.consumption.byResource(mockVaults[0]!.id), [
+ { planCode: VAULT_PLAN_CODE, quantity: 100, price: { text: '100 €' } },
+ ]);
+
+ const wrapper = await testWrapperBuilder().withQueryClient(queryClient).build();
+
+ const { container } = render(, { wrapper });
await expect(container).toBeAccessible();
});
diff --git a/packages/manager/modules/backup-agent/src/pages/vaults/dashboard/general-information/_components/subscription-tile/_components/__tests__/ConsumptionDetails.test.tsx b/packages/manager/modules/backup-agent/src/pages/vaults/dashboard/general-information/_components/subscription-tile/_components/__tests__/ConsumptionDetails.test.tsx
index 448c4e486fa8..54a37399adcf 100644
--- a/packages/manager/modules/backup-agent/src/pages/vaults/dashboard/general-information/_components/subscription-tile/_components/__tests__/ConsumptionDetails.test.tsx
+++ b/packages/manager/modules/backup-agent/src/pages/vaults/dashboard/general-information/_components/subscription-tile/_components/__tests__/ConsumptionDetails.test.tsx
@@ -1,26 +1,13 @@
import { render } from '@testing-library/react';
+import { queryKeys } from '@/data/queries/queryKeys';
import { mockVaults } from '@/mocks/vaults/vaults.mock';
import { VAULT_PLAN_CODE } from '@/module.constants';
+import { testWrapperBuilder } from '@/test-utils/testWrapperBuilder';
+import { createQueryClientTest } from '@/test-utils/testWrapperProviders';
import { ConsumptionDetails } from '../ConsumptionDetails.component';
-const { useQuery } = vi.hoisted(() => ({
- useQuery: vi.fn(),
-}));
-
-vi.mock('@/data/hooks/consumption/useServiceConsumption', () => {
- return {
- useGetServiceConsumptionOptions: vi.fn().mockReturnValue(vi.fn()),
- };
-});
-
-vi.mock('@tanstack/react-query', () => {
- return {
- useQuery: useQuery,
- };
-});
-
vi.mock('@/hooks/useRequiredParams', () => {
return {
useRequiredParams: vi.fn().mockReturnValue({
@@ -31,12 +18,14 @@ vi.mock('@/hooks/useRequiredParams', () => {
describe('ConsumptionDetails component a11y', () => {
it('Should render ConsumptionDetails component', async () => {
- useQuery.mockReturnValue({
- data: [{ planCode: VAULT_PLAN_CODE, quantity: 100 }],
- isPending: false,
- });
+ const queryClient = createQueryClientTest();
+ queryClient.setQueryData(queryKeys.consumption.byResource(mockVaults[0]!.id), [
+ { planCode: VAULT_PLAN_CODE, quantity: 100 },
+ ]);
+
+ const wrapper = await testWrapperBuilder().withQueryClient(queryClient).build();
- const { container } = render();
+ const { container } = render(, { wrapper });
await expect(container).toBeAccessible();
});
diff --git a/packages/manager/modules/backup-agent/src/pages/vaults/delete/DeleteVault.page.tsx b/packages/manager/modules/backup-agent/src/pages/vaults/delete/DeleteVault.page.tsx
index 664a2e87e27f..ee3293a0e510 100644
--- a/packages/manager/modules/backup-agent/src/pages/vaults/delete/DeleteVault.page.tsx
+++ b/packages/manager/modules/backup-agent/src/pages/vaults/delete/DeleteVault.page.tsx
@@ -1,5 +1,6 @@
import { useNavigate, useSearchParams } from 'react-router-dom';
+import { useQuery, useQueryClient } from '@tanstack/react-query';
import { useTranslation } from 'react-i18next';
import { ODS_MODAL_COLOR } from '@ovhcloud/ods-components';
@@ -10,8 +11,8 @@ import { useFeatureAvailability } from '@ovh-ux/manager-module-common-api';
import { Modal, useNotifications } from '@ovh-ux/manager-react-components';
import { BACKUP_AGENT_NAMESPACES } from '@/BackupAgent.translations';
-import { useBackupVaultsList } from '@/data/hooks/vaults/getVault';
-import { useDeleteVault } from '@/data/hooks/vaults/useDeleteVault';
+import { useDeleteVault } from '@/data/hooks/useDeleteVault';
+import { vaultsQueries } from '@/data/queries/vaults.queries';
import { useGetFeaturesAvailabilityNames } from '@/hooks/useGetFeatureAvailability';
export default function DeleteVaultPage() {
@@ -20,7 +21,8 @@ export default function DeleteVaultPage() {
const closeModal = () => navigate('..');
const { addSuccess, addError } = useNotifications();
const [searchParams] = useSearchParams();
- const { data: vaults } = useBackupVaultsList();
+ const queryClient = useQueryClient();
+ const { data: vaults } = useQuery(vaultsQueries.withClient(queryClient).list());
const vaultId = searchParams.get('vaultId');
const vault = vaults?.find(({ id }) => id === vaultId);
diff --git a/packages/manager/modules/backup-agent/src/pages/vaults/listing/Listing.page.tsx b/packages/manager/modules/backup-agent/src/pages/vaults/listing/Listing.page.tsx
index 931d2b980898..b4fc22e3c645 100644
--- a/packages/manager/modules/backup-agent/src/pages/vaults/listing/Listing.page.tsx
+++ b/packages/manager/modules/backup-agent/src/pages/vaults/listing/Listing.page.tsx
@@ -2,6 +2,7 @@ import { Suspense } from 'react';
import { Outlet } from 'react-router-dom';
+import { useQuery, useQueryClient } from '@tanstack/react-query';
import { Trans, useTranslation } from 'react-i18next';
import { OdsText } from '@ovhcloud/ods-components/react';
@@ -9,14 +10,15 @@ import { OdsText } from '@ovhcloud/ods-components/react';
import { Datagrid, Links } from '@ovh-ux/manager-react-components';
import { BACKUP_AGENT_NAMESPACES } from '@/BackupAgent.translations';
-import { useBackupVaultsList } from '@/data/hooks/vaults/getVault';
+import { vaultsQueries } from '@/data/queries/vaults.queries';
import { useGuideUtils } from '@/hooks/useGuideUtils';
import { useColumns } from './_hooks/useColumns.hooks';
export default function ListingPage() {
useTranslation([BACKUP_AGENT_NAMESPACES.VAULT_LISTING]);
- const { data } = useBackupVaultsList();
+ const queryClient = useQueryClient();
+ const { data } = useQuery(vaultsQueries.withClient(queryClient).list());
const columns = useColumns();
const guide = useGuideUtils();
diff --git a/packages/manager/modules/backup-agent/src/test-utils/testWrapperBuilder.tsx b/packages/manager/modules/backup-agent/src/test-utils/testWrapperBuilder.tsx
index 162e26163622..66aa02bb9394 100644
--- a/packages/manager/modules/backup-agent/src/test-utils/testWrapperBuilder.tsx
+++ b/packages/manager/modules/backup-agent/src/test-utils/testWrapperBuilder.tsx
@@ -1,5 +1,7 @@
import React from 'react';
+import { QueryClient } from '@tanstack/react-query';
+
import { BackupAgentProviderProps } from '@/BackupAgent.context';
import {
@@ -14,13 +16,14 @@ import {
type BuilderConfig = {
withI18next: boolean;
withQueryClient: boolean;
+ withCustomQueryClient?: QueryClient;
withShellContext: boolean;
withAppContext: boolean;
appContext?: BackupAgentProviderProps;
};
type TestWrapperBuilder = {
withI18next: () => TestWrapperBuilder;
- withQueryClient: () => TestWrapperBuilder;
+ withQueryClient: (queryClient?: QueryClient) => TestWrapperBuilder;
withShellContext: () => TestWrapperBuilder;
withAppContext: (customAppContext?: BackupAgentProviderProps) => TestWrapperBuilder;
build: () => Promise>;
@@ -35,7 +38,7 @@ export const testWrapperBuilder = (): TestWrapperBuilder => {
const build = async (): Promise> => {
const providers: TestProvider[] = [];
if (config.withI18next) await addI18nextProvider(providers);
- if (config.withQueryClient) addQueryClientProvider(providers);
+ if (config.withQueryClient) addQueryClientProvider(providers, config.withCustomQueryClient);
if (config.withShellContext) await addShellContextProvider(providers);
if (config.withAppContext) addAppContextProvider(providers, config.appContext);
return createProviderWrapper(providers);
@@ -45,8 +48,9 @@ export const testWrapperBuilder = (): TestWrapperBuilder => {
config.withI18next = true;
return builder;
},
- withQueryClient: () => {
+ withQueryClient: (queryClient?: QueryClient) => {
config.withQueryClient = true;
+ config.withCustomQueryClient = queryClient;
return builder;
},
withShellContext: () => {
diff --git a/packages/manager/modules/backup-agent/src/test-utils/testWrapperProviders.tsx b/packages/manager/modules/backup-agent/src/test-utils/testWrapperProviders.tsx
index 32e1fa840692..bc03bd63488a 100644
--- a/packages/manager/modules/backup-agent/src/test-utils/testWrapperProviders.tsx
+++ b/packages/manager/modules/backup-agent/src/test-utils/testWrapperProviders.tsx
@@ -32,10 +32,16 @@ export const addI18nextProvider = async (providers: TestProvider[]) => {
}
providers.push(({ children }) => {children});
};
-export const addQueryClientProvider = (providers: TestProvider[]) => {
- const queryClient = new QueryClient({
- defaultOptions: { queries: { retry: false }, mutations: { retry: false } },
+export const createQueryClientTest = () =>
+ new QueryClient({
+ defaultOptions: { queries: { retry: false, staleTime: Infinity }, mutations: { retry: false } },
});
+
+export const addQueryClientProvider = (
+ providers: TestProvider[],
+ customQueryClient?: QueryClient,
+) => {
+ const queryClient = customQueryClient ?? createQueryClientTest();
providers.push(({ children }) => (
{children}
));