import React from 'react';
import { configureStore } from '@reduxjs/toolkit';
import { screen, render } from '@testing-library/react';
import userEvent from '@testing-library/user-event';
import { Provider } from 'react-redux';
import { createMemoryRouter, RouterProvider } from 'react-router-dom';
import CreateImageWizard from '../Components/CreateImageWizard/CreateImageWizard';
import LandingPage from '../Components/LandingPage/LandingPage';
import ShareImageModal from '../Components/ShareImageModal/ShareImageModal';
import { middleware, reducer } from '../store';
import { resolveRelPath } from '../Utilities/path';
export const renderCustomRoutesWithReduxRouter = async (
route = '/',
preloadedState = {},
routes
) => {
const store = configureStore({ reducer, middleware, preloadedState });
const router = createMemoryRouter(routes, {
initialEntries: [resolveRelPath(route)],
});
render(
);
return { router, store };
};
export const renderWithReduxRouter = async (
route = '/',
preloadedState = {}
) => {
const store = configureStore({ reducer, middleware, preloadedState });
const routes = [
{
path: 'insights/image-builder/*',
element: ,
},
{
path: 'insights/image-builder/imagewizard/:composeId?',
element: ,
},
{
path: 'insights/image-builder/share/:composeId',
element: ,
},
];
const router = createMemoryRouter(routes, {
initialEntries: [resolveRelPath(route)],
});
render(
);
return { router, store };
};
export const renderWithProvider = (
component,
container,
preloadedState = {}
) => {
const store = configureStore({ reducer, middleware, preloadedState });
return render({component}, {
container: container,
});
};
export const clickBack = async () => {
const user = userEvent.setup();
await user.click(await screen.findByRole('button', { name: /Back/ }));
};
export const clickNext = async () => {
const user = userEvent.setup();
await user.click(await screen.findByRole('button', { name: /Next/ }));
};
export const clickCancel = async () => {
const user = userEvent.setup();
await user.click(await screen.findByRole('button', { name: /Cancel/ }));
};
export const getNextButton = async () => {
const next = await screen.findByRole('button', { name: /Next/ });
return next;
};
export const verifyCancelButton = async (router) => {
await clickCancel();
expect(router.state.location.pathname).toBe('/insights/image-builder');
};