import { act, renderHook } from "@testing-library/react-hooks"; import MockAdapter from "axios-mock-adapter"; import React from "react"; import { Provider } from "react-redux"; import { usePatch } from "../hooks"; import { carActionHandler } from "../test-utils/CarActionHandler"; import { configureStore } from "../test-utils/configureStore"; describe("usePatch", () => { const ReduxProvider = ({ children, reduxStore, }: { children: any; reduxStore: any; }) => {children}; const { store: mockStore, apiSaga } = configureStore(); afterEach(() => { jest.resetAllMocks(); }); const wrapper = ({ children }: { children: any }) => ( {children} ); it("should patch data", async () => { const mock = new MockAdapter(apiSaga.apiService.httpAdapter); mock.onPatch("/cars/9").reply(200, { data: { attributes: { id: "9", type: "car", brand: "UpdatedCar", model: "ULL", year: "2022", }, }, }); const { result } = renderHook(() => usePatch(carActionHandler), { wrapper, }); await act(async () => { const resultdata = await result.current .update("9", { model: { id: "9", type: "car", brand: "UpdatedCar", model: "ULL", year: "2022", }, includeNames: [], }) .then((response) => response) .catch((err) => { console.log(err); }); await expect(resultdata).toEqual({ attributes: { id: "9", type: "car", brand: "UpdatedCar", model: "ULL", year: "2022", }, }); }); }); });