import React from 'react';
import { Identity } from '@theorchard/suite-frontend';
import { createIdentity, renderInAppContext } from '@theorchard/suite-testing';
import * as canPerformQuery from 'src/data/queries/canPerform/canPerform';
import * as featureFlags from 'src/utils/features';
import CatalogPage from '../catalogPage';

describe('CatalogPage', () => {
    const renderPage = (identity?: Identity) =>
        renderInAppContext(<CatalogPage />, { identity });

    beforeEach(() => {
        jest.spyOn(featureFlags, 'usePPEnabledFF').mockReturnValue(true);
        jest.spyOn(canPerformQuery, 'useCanPerformAction').mockReturnValue({
            data: true,
            loading: false,
            error: undefined,
        });
    });

    afterEach(() => {
        jest.restoreAllMocks();
    });

    describe('when user has both roles and feature flag is enabled', () => {
        const identity = createIdentity({
            roles: ['manage_nr_repertoire', 'manage_nr_ownership'],
            features: { view_nr_performance: true },
        });

        test('Renders the sound recording page', async () => {
            const { getByText, container } = renderPage(identity);
            const pageModuleNave = container.querySelector('.PageModuleNav');

            expect(getByText('Sound Recording')).toBeInTheDocument();
            expect(pageModuleNave).toBeInTheDocument();
        });
    });
});
