import React from 'react'; import { render, screen, waitFor } from '@testing-library/react'; import '@testing-library/jest-dom'; import userEvent from '@testing-library/user-event'; import { tick, withMockedProvider, withReactRouter, } from '../../../../../testHelper'; import { mocks, hostId, allRolesMocks, unauthorizedMocks, authorizedMocks, } from './RolesTab.fixtures'; import RolesTab from '../'; const TestComponent = withReactRouter(withMockedProvider(RolesTab)); describe('RolesTab', () => { it('should load Ansible Roles as admin', async () => { render(); await waitFor(tick); expect(screen.getByText('aardvaark.cube')).toBeInTheDocument(); expect(screen.getByText('aardvaark.sphere')).toBeInTheDocument(); expect(screen.getByText('another.role')).toBeInTheDocument(); }); it('should show all Ansible roles modal', async () => { render( ); await waitFor(tick); expect(screen.getByText('view all assigned roles')).toBeInTheDocument(); expect(screen.queryByText('All Ansible Roles')).not.toBeInTheDocument(); userEvent.click(screen.getByText('view all assigned roles')); await waitFor(tick); expect(screen.getByText('All Ansible Roles')).toBeInTheDocument(); expect(screen.getByText('Inherited from Hostgroup')).toBeInTheDocument(); userEvent.click(screen.getByRole('button', { name: 'Close' })); await waitFor(tick); expect(screen.queryByText('All Ansible Roles')).not.toBeInTheDocument(); }); it('should load Ansible Roles as viewer', async () => { render( ); await waitFor(tick); expect(screen.getByText('aardvaark.cube')).toBeInTheDocument(); expect(screen.queryByText('Edit Ansible Roles')).not.toBeInTheDocument(); }); it('should not load Ansible Roles for unauthorized user', async () => { render( ); await waitFor(tick); expect(screen.queryByText('aardvaark.cube')).not.toBeInTheDocument(); expect(screen.getByText('Permission denied')).toBeInTheDocument(); expect( screen.getByText( 'You are not authorized to view the page. Request the following permissions from administrator: view_ansible_roles.' ) ).toBeInTheDocument(); }); });