import { ReactNode } from "react"
import { Provider } from "react-redux"
import thunk from "redux-thunk"
import configurecreateMockStore from "redux-mock-store"

export default (obj = {}): Record<string, any> => {
    const store = configurecreateMockStore([thunk])(obj)
    const originalDispatch = store.dispatch
    store.dispatch = jest.fn(originalDispatch)

    const ProviderWithStore = ({ children }: { children: ReactNode }) => (
        <Provider store={store}>{children}</Provider>
    )

    return { ...store, ProviderWithStore }
}
