From d5542299588c61ae6172aaa9370f7362802daf93 Mon Sep 17 00:00:00 2001 From: Matthew Russell Date: Mon, 6 Nov 2023 10:59:18 -0800 Subject: [PATCH] test: wrap tests with mocked provider --- libs/accounts/src/lib/transfer-form.spec.tsx | 29 ++++++++++++++++---- libs/accounts/src/lib/transfer-form.tsx | 2 +- 2 files changed, 24 insertions(+), 7 deletions(-) diff --git a/libs/accounts/src/lib/transfer-form.spec.tsx b/libs/accounts/src/lib/transfer-form.spec.tsx index 032a18df9..98314620e 100644 --- a/libs/accounts/src/lib/transfer-form.spec.tsx +++ b/libs/accounts/src/lib/transfer-form.spec.tsx @@ -1,11 +1,28 @@ import { fireEvent, render, screen, waitFor } from '@testing-library/react'; import userEvent from '@testing-library/user-event'; import BigNumber from 'bignumber.js'; -import { AddressField, TransferFee, TransferForm } from './transfer-form'; +import { + AddressField, + TransferFee, + TransferForm, + type TransferFormProps, +} from './transfer-form'; import { AccountType } from '@vegaprotocol/types'; import { removeDecimal } from '@vegaprotocol/utils'; +import { MockedProvider } from '@apollo/client/testing'; describe('TransferForm', () => { + const renderComponent = (props: TransferFormProps) => { + return render( + // Wrap with mock provider as the form will make queries to fetch the selected + // toVegaKey accounts. We don't test this for now but we need to wrap so that + // the component has access to the client + + + + ); + }; + const submit = async () => { await userEvent.click( screen.getByRole('button', { name: 'Confirm transfer' }) @@ -66,7 +83,7 @@ describe('TransferForm', () => { // 1003-TRAN-017 // 1003-TRAN-018 // 1003-TRAN-019 - render(); + renderComponent(props); // Select a pubkey await userEvent.selectOptions( screen.getByLabelText('To Vega key'), @@ -113,7 +130,7 @@ describe('TransferForm', () => { // 1003-TRAN-012 // 1003-TRAN-013 // 1003-TRAN-004 - render(); + renderComponent(props); await submit(); expect(await screen.findAllByText('Required')).toHaveLength(3); // pubkey is set as default value const toggle = screen.getByText('Enter manually'); @@ -139,7 +156,7 @@ describe('TransferForm', () => { // 1002-WITH-010 // 1003-TRAN-011 // 1003-TRAN-014 - render(); + renderComponent(props); // check current pubkey not shown const keySelect = screen.getByLabelText('To Vega key'); @@ -206,7 +223,7 @@ describe('TransferForm', () => { describe('IncludeFeesCheckbox', () => { it('validates fields and submits when checkbox is checked', async () => { const mockSubmit = jest.fn(); - render(); + renderComponent({ ...props, submitTransfer: mockSubmit }); // check current pubkey not shown const keySelect = screen.getByLabelText('To Vega key'); @@ -275,7 +292,7 @@ describe('TransferForm', () => { }); it('validates fields when checkbox is not checked', async () => { - render(); + renderComponent(props); // check current pubkey not shown const keySelect: HTMLSelectElement = screen.getByLabelText('To Vega key'); diff --git a/libs/accounts/src/lib/transfer-form.tsx b/libs/accounts/src/lib/transfer-form.tsx index 285621a12..eeb701111 100644 --- a/libs/accounts/src/lib/transfer-form.tsx +++ b/libs/accounts/src/lib/transfer-form.tsx @@ -37,7 +37,7 @@ interface FormFields { fromAccount: AccountType; } -interface TransferFormProps { +export interface TransferFormProps { pubKey: string | null; pubKeys: string[] | null; accounts: Array<{