SideMenu.test.tsx 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  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/store/store', () => ({
  10. store: {
  11. getState: jest.fn().mockReturnValue({
  12. location: {
  13. lastUpdated: 0,
  14. },
  15. }),
  16. },
  17. }));
  18. jest.mock('app/core/services/context_srv', () => ({
  19. contextSrv: {
  20. sidemenu: true,
  21. user: {},
  22. isSignedIn: false,
  23. isGrafanaAdmin: false,
  24. isEditor: false,
  25. hasEditPermissionFolders: false,
  26. toggleSideMenu: jest.fn(),
  27. },
  28. }));
  29. const setup = (propOverrides?: object) => {
  30. const props = Object.assign(
  31. {
  32. loginUrl: '',
  33. user: {},
  34. mainLinks: [],
  35. bottomeLinks: [],
  36. isSignedIn: false,
  37. },
  38. propOverrides
  39. );
  40. return shallow(<SideMenu {...props} />);
  41. };
  42. describe('Render', () => {
  43. it('should render component', () => {
  44. const wrapper = setup();
  45. expect(wrapper).toMatchSnapshot();
  46. });
  47. });
  48. describe('Functions', () => {
  49. describe('toggle side menu', () => {
  50. const wrapper = setup();
  51. const instance = wrapper.instance() as SideMenu;
  52. instance.toggleSideMenu();
  53. it('should call contextSrv.toggleSideMenu', () => {
  54. expect(contextSrv.toggleSideMenu).toHaveBeenCalled();
  55. });
  56. it('should emit toggle sidemenu event', () => {
  57. expect(appEvents.emit).toHaveBeenCalledWith('toggle-sidemenu');
  58. });
  59. });
  60. describe('toggle side menu on mobile', () => {
  61. const wrapper = setup();
  62. const instance = wrapper.instance() as SideMenu;
  63. instance.toggleSideMenuSmallBreakpoint();
  64. it('should emit toggle sidemenu event', () => {
  65. expect(appEvents.emit).toHaveBeenCalledWith('toggle-sidemenu-mobile');
  66. });
  67. });
  68. });