import React from 'react';
import { screen } from '@testing-library/react';
import { renderInAppContext } from '@theorchard/suite-testing';
import { mockIdentity } from 'lib/test-utils/mockIdentity';
import ToolsPage from '..';

describe('ToolsPage', () => {
    test('renders page title', () => {
        renderInAppContext(<ToolsPage />);
        expect(screen.getByText('Tools')).toBeVisible();
    });

    describe('when user has tools_artist_name_change role', () => {
        beforeAll(() => {
            mockIdentity(['tools_artist_name_change']);
        });

        test('renders artist name change card and its elements', () => {
            renderInAppContext(<ToolsPage />);
            expect(screen.getByText('Artist Name Change')).toBeVisible();
            expect(
                screen.getByText('Rename or Consolidate Distribution Artists')
            ).toBeVisible();
        });

        test('does not render composition changes title', () => {
            renderInAppContext(<ToolsPage />);
            expect(screen.queryByText('Composition Changes')).toBeNull();
        });
    });

    describe('when user has publishing_compositions_changelog role', () => {
        beforeAll(() => {
            mockIdentity(['publishing_compositions_changelog']);
        });

        test('renders composition changes card and its elements', () => {
            renderInAppContext(<ToolsPage />);
            expect(screen.getByText('Composition Changes')).toBeVisible();
            expect(
                screen.getByText(
                    'Generate Reports for New and Updated Composition Deliveries'
                )
            ).toBeVisible();
        });

        test('does not render artist name change title', () => {
            renderInAppContext(<ToolsPage />);
            expect(screen.queryByText('Artist Name Change')).toBeNull();
        });
    });
});
