mirror of
https://github.com/grafana/grafana.git
synced 2025-09-23 18:52:33 +08:00

* MegaMenu: Fix broken hamburger toggle * oops * MegaMenu: move NavBarToggle to FocusScope
69 lines
1.9 KiB
TypeScript
69 lines
1.9 KiB
TypeScript
import { render, screen } from '@testing-library/react';
|
|
import React from 'react';
|
|
import { Provider } from 'react-redux';
|
|
import { Router } from 'react-router-dom';
|
|
import { getGrafanaContextMock } from 'test/mocks/getGrafanaContextMock';
|
|
|
|
import { NavModelItem, NavSection } from '@grafana/data';
|
|
import { locationService } from '@grafana/runtime';
|
|
import { GrafanaContext } from 'app/core/context/GrafanaContext';
|
|
import { configureStore } from 'app/store/configureStore';
|
|
|
|
import TestProvider from '../../../../test/helpers/TestProvider';
|
|
|
|
import { MegaMenu } from './MegaMenu';
|
|
|
|
const setup = () => {
|
|
const navBarTree: NavModelItem[] = [
|
|
{
|
|
text: 'Section name',
|
|
section: NavSection.Core,
|
|
id: 'section',
|
|
url: 'section',
|
|
children: [
|
|
{ text: 'Child1', id: 'child1', url: 'section/child1' },
|
|
{ text: 'Child2', id: 'child2', url: 'section/child2' },
|
|
],
|
|
},
|
|
{
|
|
text: 'Profile',
|
|
id: 'profile',
|
|
section: NavSection.Config,
|
|
url: 'profile',
|
|
},
|
|
];
|
|
|
|
const context = getGrafanaContextMock();
|
|
const store = configureStore({ navBarTree });
|
|
|
|
context.chrome.toggleMegaMenu();
|
|
|
|
return render(
|
|
<Provider store={store}>
|
|
<GrafanaContext.Provider value={context}>
|
|
<TestProvider>
|
|
<Router history={locationService.getHistory()}>
|
|
<MegaMenu onClose={() => {}} />
|
|
</Router>
|
|
</TestProvider>
|
|
</GrafanaContext.Provider>
|
|
</Provider>
|
|
);
|
|
};
|
|
|
|
describe('MegaMenu', () => {
|
|
it('should render component', async () => {
|
|
setup();
|
|
|
|
expect(await screen.findByTestId('navbarmenu')).toBeInTheDocument();
|
|
expect(await screen.findByLabelText('Home')).toBeInTheDocument();
|
|
expect(screen.queryAllByLabelText('Section name').length).toBe(2);
|
|
});
|
|
|
|
it('should filter out profile', async () => {
|
|
setup();
|
|
|
|
expect(screen.queryByLabelText('Profile')).not.toBeInTheDocument();
|
|
});
|
|
});
|