TeamPages.test.tsx 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. import React from 'react';
  2. import { shallow } from 'enzyme';
  3. import { TeamPages, Props } from './TeamPages';
  4. import { Team, TeamMember, OrgRole } from '../../types';
  5. import { getMockTeam } from './__mocks__/teamMocks';
  6. import { User } from 'app/core/services/context_srv';
  7. import { NavModel } from '@grafana/ui';
  8. jest.mock('app/core/config', () => ({
  9. buildInfo: { isEnterprise: true },
  10. }));
  11. const setup = (propOverrides?: object) => {
  12. const props: Props = {
  13. navModel: {} as NavModel,
  14. teamId: 1,
  15. loadTeam: jest.fn(),
  16. loadTeamMembers: jest.fn(),
  17. pageName: 'members',
  18. team: {} as Team,
  19. members: [] as TeamMember[],
  20. editorsCanAdmin: false,
  21. signedInUser: {
  22. id: 1,
  23. isGrafanaAdmin: false,
  24. orgRole: OrgRole.Viewer,
  25. } as User,
  26. };
  27. Object.assign(props, propOverrides);
  28. const wrapper = shallow(<TeamPages {...props} />);
  29. const instance = wrapper.instance();
  30. return {
  31. wrapper,
  32. instance,
  33. };
  34. };
  35. describe('Render', () => {
  36. it('should render component', () => {
  37. const { wrapper } = setup();
  38. expect(wrapper).toMatchSnapshot();
  39. });
  40. it('should render member page if team not empty', () => {
  41. const { wrapper } = setup({
  42. team: getMockTeam(),
  43. });
  44. expect(wrapper).toMatchSnapshot();
  45. });
  46. it('should render settings and preferences page', () => {
  47. const { wrapper } = setup({
  48. team: getMockTeam(),
  49. pageName: 'settings',
  50. preferences: {
  51. homeDashboardId: 1,
  52. theme: 'Default',
  53. timezone: 'Default',
  54. },
  55. });
  56. expect(wrapper).toMatchSnapshot();
  57. });
  58. it('should render group sync page', () => {
  59. const { wrapper } = setup({
  60. team: getMockTeam(),
  61. pageName: 'groupsync',
  62. });
  63. expect(wrapper).toMatchSnapshot();
  64. });
  65. describe('when feature toggle editorsCanAdmin is turned on', () => {
  66. it('should render settings page if user is team admin', () => {
  67. const { wrapper } = setup({
  68. team: getMockTeam(),
  69. pageName: 'settings',
  70. preferences: {
  71. homeDashboardId: 1,
  72. theme: 'Default',
  73. timezone: 'Default',
  74. },
  75. editorsCanAdmin: true,
  76. signedInUser: {
  77. id: 1,
  78. isGrafanaAdmin: false,
  79. orgRole: OrgRole.Admin,
  80. } as User,
  81. });
  82. expect(wrapper).toMatchSnapshot();
  83. });
  84. it('should not render settings page if user is team member', () => {
  85. const { wrapper } = setup({
  86. team: getMockTeam(),
  87. pageName: 'settings',
  88. preferences: {
  89. homeDashboardId: 1,
  90. theme: 'Default',
  91. timezone: 'Default',
  92. },
  93. editorsCanAdmin: true,
  94. signedInUser: {
  95. id: 1,
  96. isGrafanaAdmin: false,
  97. orgRole: OrgRole.Viewer,
  98. } as User,
  99. });
  100. expect(wrapper).toMatchSnapshot();
  101. });
  102. });
  103. });