SideMenu.test.tsx 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. import React from 'react';
  2. import { shallow } from 'enzyme';
  3. import { SideMenu } from './SideMenu';
  4. import appEvents from '../../app_events';
  5. import { contextSrv } from 'app/core/services/context_srv';
  6. jest.mock('../../app_events', () => ({
  7. emit: jest.fn(),
  8. }));
  9. jest.mock('app/core/services/context_srv', () => ({
  10. contextSrv: {
  11. sidemenu: true,
  12. user: {},
  13. isSignedIn: false,
  14. isGrafanaAdmin: false,
  15. isEditor: false,
  16. hasEditPermissionFolders: false,
  17. toggleSideMenu: jest.fn(),
  18. },
  19. }));
  20. const setup = (propOverrides?: object) => {
  21. const props = Object.assign(
  22. {
  23. loginUrl: '',
  24. user: {},
  25. mainLinks: [],
  26. bottomeLinks: [],
  27. isSignedIn: false,
  28. },
  29. propOverrides
  30. );
  31. return shallow(<SideMenu {...props} />);
  32. };
  33. describe('Render', () => {
  34. it('should render component', () => {
  35. const wrapper = setup();
  36. expect(wrapper).toMatchSnapshot();
  37. });
  38. });
  39. describe('Functions', () => {
  40. describe('toggle side menu', () => {
  41. const wrapper = setup();
  42. const instance = wrapper.instance() as SideMenu;
  43. instance.toggleSideMenu();
  44. it('should call contextSrv.toggleSideMenu', () => {
  45. expect(contextSrv.toggleSideMenu).toHaveBeenCalled();
  46. });
  47. it('should emit toggle sidemenu event', () => {
  48. expect(appEvents.emit).toHaveBeenCalledWith('toggle-sidemenu');
  49. });
  50. });
  51. describe('toggle side menu on mobile', () => {
  52. const wrapper = setup();
  53. const instance = wrapper.instance() as SideMenu;
  54. instance.toggleSideMenuSmallBreakpoint();
  55. it('should emit toggle sidemenu event', () => {
  56. expect(appEvents.emit).toHaveBeenCalledWith('toggle-sidemenu-mobile');
  57. });
  58. });
  59. });