mirror of https://github.com/grafana/grafana.git
				
				
				
			
		
			
	
	
		
			48 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
		
		
			
		
	
	
			48 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
|  | import { render, screen } from '@testing-library/react'; | ||
|  | import userEvent from '@testing-library/user-event'; | ||
|  | 
 | ||
|  | import { defaultDashboard } from '@grafana/schema'; | ||
|  | 
 | ||
|  | import { createDashboardModelFixture } from '../../state/__fixtures__/dashboardFixtures'; | ||
|  | 
 | ||
|  | import AddPanelButton, { Props } from './AddPanelButton'; | ||
|  | jest.mock('./AddPanelMenu', () => ({ | ||
|  |   ...jest.requireActual('./AddPanelMenu'), | ||
|  |   __esModule: true, | ||
|  |   default: () => <div>Menu</div>, | ||
|  | })); | ||
|  | 
 | ||
|  | function setup(options?: Partial<Props>) { | ||
|  |   const props = { | ||
|  |     dashboard: createDashboardModelFixture(defaultDashboard), | ||
|  |   }; | ||
|  |   const { rerender } = render(<AddPanelButton dashboard={props.dashboard} />); | ||
|  | 
 | ||
|  |   return rerender; | ||
|  | } | ||
|  | 
 | ||
|  | beforeEach(() => { | ||
|  |   jest.clearAllMocks(); | ||
|  | }); | ||
|  | 
 | ||
|  | it('renders button', () => { | ||
|  |   setup(); | ||
|  | 
 | ||
|  |   expect(screen.getByRole('button', { name: 'Add' })).toBeInTheDocument(); | ||
|  | }); | ||
|  | 
 | ||
|  | it('renders button without menu when menu is not open', () => { | ||
|  |   setup(); | ||
|  | 
 | ||
|  |   expect(screen.queryByText('Menu')).not.toBeInTheDocument(); | ||
|  | }); | ||
|  | 
 | ||
|  | it('renders button with menu when menu is open', async () => { | ||
|  |   const user = userEvent.setup(); | ||
|  |   setup(); | ||
|  | 
 | ||
|  |   await user.click(screen.getByRole('button', { name: 'Add' })); | ||
|  | 
 | ||
|  |   expect(screen.queryByText('Menu')).toBeInTheDocument(); | ||
|  | }); |