TestProviders

This commit is contained in:
Joel Jeremy Marquez
2025-11-14 08:44:54 -08:00
parent 49c8ad7224
commit e4724e50cf
7 changed files with 59 additions and 55 deletions

View File

@@ -10,7 +10,7 @@ import { type AccountEntity } from 'loot-core/types/models';
import { ReconcileMenu, ReconcilingMessage } from './Reconcile';
import { useSheetValue } from '@desktop-client/hooks/useSheetValue';
import { TestProvider } from '@desktop-client/redux/mock';
import { TestProviders } from '@desktop-client/mocks';
vi.mock('@desktop-client/hooks/useSheetValue', () => ({
useSheetValue: vi.fn(),
@@ -40,14 +40,14 @@ describe('ReconcilingMessage math & UI', () => {
const onCreateTransaction = vi.fn();
render(
<TestProvider>
<TestProviders>
<ReconcilingMessage
balanceQuery={makeBalanceQuery()}
targetBalance={5000}
onDone={onDone}
onCreateTransaction={onCreateTransaction}
/>
</TestProvider>,
</TestProviders>,
);
expect(screen.getByText('All reconciled!')).toBeInTheDocument();
@@ -67,14 +67,14 @@ describe('ReconcilingMessage math & UI', () => {
const onCreateTransaction = vi.fn();
render(
<TestProvider>
<TestProviders>
<ReconcilingMessage
balanceQuery={makeBalanceQuery()}
targetBalance={10000}
onDone={vi.fn()}
onCreateTransaction={onCreateTransaction}
/>
</TestProvider>,
</TestProviders>,
);
// Formatted amounts present
@@ -95,14 +95,14 @@ describe('ReconcilingMessage math & UI', () => {
const onCreateTransaction = vi.fn();
render(
<TestProvider>
<TestProviders>
<ReconcilingMessage
balanceQuery={makeBalanceQuery()}
targetBalance={10000}
onDone={vi.fn()}
onCreateTransaction={onCreateTransaction}
/>
</TestProvider>,
</TestProviders>,
);
expect(screen.getByText('120.00')).toBeInTheDocument();
@@ -133,13 +133,13 @@ describe('ReconcileMenu arithmetic evaluation', () => {
const onClose = vi.fn();
render(
<TestProvider>
<TestProviders>
<ReconcileMenu
account={baseAccount as AccountEntity}
onReconcile={onReconcile}
onClose={onClose}
/>
</TestProvider>,
</TestProviders>,
);
const input = screen.getByRole('textbox');
@@ -162,13 +162,13 @@ describe('ReconcileMenu arithmetic evaluation', () => {
const onClose = vi.fn();
render(
<TestProvider>
<TestProviders>
<ReconcileMenu
account={baseAccount as AccountEntity}
onReconcile={onReconcile}
onClose={onClose}
/>
</TestProvider>,
</TestProviders>,
);
const input = screen.getByRole('textbox');
@@ -200,13 +200,13 @@ describe('ReconcileMenu arithmetic evaluation', () => {
connectedAccount.balance_current = 4321;
render(
<TestProvider>
<TestProviders>
<ReconcileMenu
account={connectedAccount}
onReconcile={onReconcile}
onClose={onClose}
/>
</TestProvider>,
</TestProviders>,
);
// Fill from last synced value (43.21)
@@ -223,13 +223,13 @@ describe('ReconcileMenu arithmetic evaluation', () => {
const onReconcile = vi.fn();
const onClose = vi.fn();
render(
<TestProvider>
<TestProviders>
<ReconcileMenu
account={baseAccount as AccountEntity}
onReconcile={onReconcile}
onClose={onClose}
/>
</TestProvider>,
</TestProviders>,
);
const input = screen.getByRole('textbox');
@@ -247,13 +247,13 @@ describe('ReconcileMenu arithmetic evaluation', () => {
const onReconcile = vi.fn();
const onClose = vi.fn();
render(
<TestProvider>
<TestProviders>
<ReconcileMenu
account={baseAccount as AccountEntity}
onReconcile={onReconcile}
onClose={onClose}
/>
</TestProvider>,
</TestProviders>,
);
await userEvent.click(screen.getByRole('button', { name: 'Reconcile' }));

View File

@@ -12,7 +12,7 @@ import {
import { AuthProvider } from '@desktop-client/auth/AuthProvider';
import { useCommonPayees } from '@desktop-client/hooks/usePayees';
import { TestProvider } from '@desktop-client/redux/mock';
import { TestProviders } from '@desktop-client/mocks';
const PAYEE_SELECTOR = '[data-testid][role=option]';
const PAYEE_SECTION_SELECTOR = '[data-testid$="-item-group"]';
@@ -75,7 +75,7 @@ function renderPayeeAutocomplete(
};
render(
<TestProvider>
<TestProviders>
<AuthProvider>
<div data-testid="autocomplete-test">
<PayeeAutocomplete
@@ -87,7 +87,7 @@ function renderPayeeAutocomplete(
/>
</div>
</AuthProvider>
</TestProvider>,
</TestProviders>,
);
return screen.getByTestId('autocomplete-test');
}

View File

@@ -3,7 +3,7 @@ import { vi } from 'vitest';
import { GoCardlessExternalMsgModal } from './GoCardlessExternalMsgModal';
import { TestProvider } from '@desktop-client/redux/mock';
import { TestProviders } from '@desktop-client/mocks';
vi.mock('@desktop-client/hooks/useGlobalPref', () => ({
useGlobalPref: () => [null],
@@ -50,9 +50,9 @@ describe('GoCardlessExternalMsgModal - Country Auto-selection', () => {
});
render(
<TestProvider>
<TestProviders>
<GoCardlessExternalMsgModal {...mockProps} />
</TestProvider>,
</TestProviders>,
);
const countryInput = screen.getByPlaceholderText('(please select)');
@@ -76,9 +76,9 @@ describe('GoCardlessExternalMsgModal - Country Auto-selection', () => {
});
render(
<TestProvider>
<TestProviders>
<GoCardlessExternalMsgModal {...mockProps} />
</TestProvider>,
</TestProviders>,
);
const countryInput = screen.getByPlaceholderText('(please select)');
@@ -101,9 +101,9 @@ describe('GoCardlessExternalMsgModal - Country Auto-selection', () => {
});
render(
<TestProvider>
<TestProviders>
<GoCardlessExternalMsgModal {...mockProps} />
</TestProvider>,
</TestProviders>,
);
const countryInput = screen.getByPlaceholderText('(please select)');
@@ -126,9 +126,9 @@ describe('GoCardlessExternalMsgModal - Country Auto-selection', () => {
});
render(
<TestProvider>
<TestProviders>
<GoCardlessExternalMsgModal {...mockProps} />
</TestProvider>,
</TestProviders>,
);
const countryInput = screen.getByPlaceholderText('(please select)');

View File

@@ -33,7 +33,7 @@ import { SchedulesProvider } from '@desktop-client/hooks/useCachedSchedules';
import { SelectedProviderWithItems } from '@desktop-client/hooks/useSelected';
import { SplitsExpandedProvider } from '@desktop-client/hooks/useSplitsExpanded';
import { SpreadsheetProvider } from '@desktop-client/hooks/useSpreadsheet';
import { TestProvider } from '@desktop-client/redux/mock';
import { TestProviders } from '@desktop-client/mocks';
vi.mock('loot-core/platform/client/fetch');
vi.mock('../../hooks/useFeatureFlag', () => ({
@@ -195,7 +195,7 @@ function LiveTransactionTable(props: LiveTransactionTableProps) {
// implementation properly uses the right latest state even if the
// hook dependencies haven't changed
return (
<TestProvider>
<TestProviders>
<AuthProvider>
<SpreadsheetProvider>
<SchedulesProvider>
@@ -226,7 +226,7 @@ function LiveTransactionTable(props: LiveTransactionTableProps) {
</SchedulesProvider>
</SpreadsheetProvider>
</AuthProvider>
</TestProvider>
</TestProviders>
);
}

View File

@@ -0,0 +1,25 @@
import React, { type ReactNode } from 'react';
import { Provider } from 'react-redux';
import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
import { configureAppStore, type AppStore } from './redux/store';
let mockQueryClient = new QueryClient();
export let mockStore: AppStore = configureAppStore({
queryClient: mockQueryClient,
});
export function resetTestProviders() {
mockQueryClient = new QueryClient();
mockStore = configureAppStore({ queryClient: mockQueryClient });
}
export function TestProviders({ children }: { children: ReactNode }) {
return (
<QueryClientProvider client={mockQueryClient}>
<Provider store={mockStore}>{children}</Provider>
</QueryClientProvider>
);
}

View File

@@ -1,21 +0,0 @@
import React, { type ReactNode } from 'react';
import { Provider } from 'react-redux';
import { QueryClient } from '@tanstack/react-query';
import { configureAppStore, type AppStore } from './store';
let mockQueryClient = new QueryClient();
export let mockStore: AppStore = configureAppStore({
queryClient: mockQueryClient,
});
export function resetMockStore() {
mockQueryClient = new QueryClient();
mockStore = configureAppStore({ queryClient: mockQueryClient });
}
export function TestProvider({ children }: { children: ReactNode }) {
return <Provider store={mockStore}>{children}</Provider>;
}

View File

@@ -1,6 +1,6 @@
import '@testing-library/jest-dom';
import { resetTestProviders } from './mocks';
import { installPolyfills } from './polyfills';
import { resetMockStore } from './redux/mock';
installPolyfills();
@@ -22,7 +22,7 @@ vi.mock('react-virtualized-auto-sizer', () => {
global.Date.now = () => 123456789;
global.__resetWorld = () => {
resetMockStore();
resetTestProviders();
};
process.on('unhandledRejection', reason => {