import * as identity from '@orchard/frontend-identity/dist/cjs/identity';
import { render as domRender } from '@testing-library/react';
import { createIdentityContext } from 'lib/test/identity';
import React from 'react';
import { MemoryRouter } from 'react-router-dom';
import { ROUTE_ACCOUNT, ROUTE_HOME } from 'src/constants/routes';
import AccountPage from 'src/pages/account';
import HomePage from 'src/pages/home';
import MainContent from '../mainContent';

describe('<MainContent>', () => {
    const context = createIdentityContext();

    const render = ({ pathname = '/' }: {
        pathname?: string
    } = {}) => {
        jest.spyOn(identity, 'useIdentity').mockReturnValue(context);

        return domRender(<MainContent />, {
            wrapper: ({ children }) => (
                <MemoryRouter
                    initialEntries={[{ pathname }]}
                    initialIndex={0}
                >
                    {children}
                </MemoryRouter>
            )
        });
    };

    describe.each([
        [ROUTE_HOME, HomePage.CLASSNAME],
        [ROUTE_ACCOUNT, AccountPage.CLASSNAME],
    ])('with route: "%s"', (pathname, className) => {
        test(`renders ${className}`, () => {
            const { container } = render({ pathname });
            const element = container.getElementsByClassName(className).item(0);
            expect(element).toBeVisible();
        });
    });
});
