import React from 'react'; import { render, screen } from '@testing-library/react'; import userEvent from '@testing-library/user-event'; import { BrowserRouter } from 'react-router-dom'; import { ShowModalReactEvent } from '../../../types/events'; import { HelpModal } from '../help/HelpModal'; import appEvents from '../../app_events'; import BottomSection from './BottomSection'; jest.mock('./utils', () => ({ getForcedLoginUrl: () => '/mockForcedLoginUrl', isLinkActive: () => false, isSearchActive: () => false, })); jest.mock('../../app_events', () => ({ publish: jest.fn(), })); jest.mock('../../config', () => ({ bootData: { navTree: [ { id: 'profile', hideFromMenu: true, }, { id: 'help', hideFromMenu: true, }, { hideFromMenu: false, }, { hideFromMenu: true, }, ], }, })); jest.mock('app/core/services/context_srv', () => ({ contextSrv: { sidemenu: true, isSignedIn: true, isGrafanaAdmin: false, hasEditPermissionFolders: false, user: { orgCount: 5, orgName: 'Grafana', }, }, })); describe('BottomSection', () => { it('should render the correct children', () => { render( ); expect(screen.getByTestId('bottom-section-items').children.length).toBe(3); }); it('creates the correct children for the help link', () => { render(
); const documentation = screen.getByRole('link', { name: 'Documentation' }); const support = screen.getByRole('link', { name: 'Support' }); const community = screen.getByRole('link', { name: 'Community' }); const keyboardShortcuts = screen.getByText('Keyboard shortcuts'); expect(documentation).toBeInTheDocument(); expect(support).toBeInTheDocument(); expect(community).toBeInTheDocument(); expect(keyboardShortcuts).toBeInTheDocument(); }); it('clicking the keyboard shortcuts button shows the modal', () => { render( ); const keyboardShortcuts = screen.getByText('Keyboard shortcuts'); expect(keyboardShortcuts).toBeInTheDocument(); userEvent.click(keyboardShortcuts); expect(appEvents.publish).toHaveBeenCalledWith(new ShowModalReactEvent({ component: HelpModal })); }); it('shows the current organization and organization switcher if showOrgSwitcher is true', () => { render( ); const currentOrg = screen.getByText(new RegExp('Grafana', 'i')); const orgSwitcher = screen.getByText('Switch organization'); expect(currentOrg).toBeInTheDocument(); expect(orgSwitcher).toBeInTheDocument(); }); });