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 { EditBankCardBody, EditBankCardPath, EditBankCardResponse, } from '@/entity/cards'; import { EditBankCardButton } from '@/features/bank-cards/EditBankCardButton'; import { DataTestId } from '@/shared/constants'; const bankCard = bankCardList[0]; const renderButton = () => { render( , { wrapper: createAppWrapper() }, ); const buttonElem = screen.getByTestId(DataTestId.EDIT_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.patch< EditBankCardPath, EditBankCardBody, EditBankCardResponse >( `/bank-card/${bankCard.id}`, async ({ request }) => { const body = await request.json(); requestSpy(body); return HttpResponse.json(bankCard); }, ); export const EditBankCardButtonHelper = { openModal, renderButton, submitHandler, };