import { bankCardList } from '@mocks/browser/data'; import { createAppWrapper } from '@mocks/jest/wrappers'; import { render, screen } from '@testing-library/react'; import userEvent from '@testing-library/user-event'; import { http, HttpResponse } from 'msw'; import type { AddBankCardBody, AddBankCardResponse } from '@/entity/cards'; import { AddBankCardButton } from '@/features/bank-cards/AddBankCardButton'; import { DataTestId } from '@/shared/constants'; const bankCard = bankCardList[0]; const renderButton = () => { render( , { wrapper: createAppWrapper() }, ); const buttonElem = screen.getByTestId(DataTestId.ADD_BANK_CARD_BUTTON); return { buttonElem, }; }; const openModal = async () => { const { buttonElem } = renderButton(); await userEvent.click(buttonElem); const modalElem = screen.getByRole('presentation'); return { modalElem, }; }; const submitHandler = (requestSpy: jest.Mock) => http.post< never, AddBankCardBody, AddBankCardResponse >( '/bank-card', async ({ request }) => { const body = await request.json(); requestSpy(body); return HttpResponse.json(bankCard); }, ); export const AddBankCardButtonHelper = { openModal, renderButton, submitHandler, };