SideMenu.test.tsx 1.3 KB

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