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 { EditExpenseListBody, EditExpenseListPath, EditExpenseListSuccessResponse } from '@/entity/expenses/list'; import { EditIncomeListButton } from '@/features/incomes/list/EditIncomeListButton'; import { DataTestId } from '@/shared/constants'; const editingList = { createdAt: '2025-08-29T07:57:40.503Z', id: '10cc093c-3875-4d33-a40a-df526266e262', items: null, title: 'Mock list', updatedAt: '2025-08-29T07:57:40.503Z', }; const renderButton = () => { render( , { wrapper: createAppWrapper() }, ); const buttonElem = screen.getByTestId(DataTestId.EDIT_INCOME_LIST_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< EditExpenseListPath, EditExpenseListBody, EditExpenseListSuccessResponse >( `/incomes/list/${editingList.id}`, async ({ request }) => { const body = await request.json(); requestSpy(body); return HttpResponse.json(editingList); }, ); export const EditIncomeListButtonHelper = { openModal, renderButton, submitHandler, };